IIS'de ASP.NET Core 3.1 Sitesini Başlatma [duplicate]
ASP.NET Core 3.1'imi IIS'de (v10) beklediğim gibi başlatamadım. Sitede normal gibi klasörlere yayınlıyorum, ancak Windows Server 2019 sanal makinemden http: // localhost: 80 veya https: // localhost: 443 (her ikisine de IIS sitesi bağlı) adresine giderek test ettiğimde, 500,19 yanıt aldım. ANCAK komut satırından dotnet MyWebApp.dll
girersem site https: // localhost: 5001 / adresinde görünür.
Neler oluyor? IIS'ye bağlı olduğu için 80 numaralı bağlantı noktası neden otomatik olarak çalışmıyor?
Bu işi yalnızca dosyaları kopyalayıp IIS kullanarak yapmak için bir numara var mı, yoksa bir .NET Core 3.1 sitesi başlatmak için komut satırını kullanmam GEREKİR Mİ?
Yanıtlar
Aşağıdakileri yaptığınızdan emin olun:
- En son Core barındırma paketi yüklendi. Değilse, buraya gidin ve "Hosting Paketi" ni arayınhttps://dotnet.microsoft.com/download/dotnet-core/3.1 (oraya düzenli olarak gitmelisiniz, yaklaşık her ay yeni bir sürüm, bunu yazarken en son 3.1.7'dir)
- Uygulamanın havuzunda, emin NET framework olun değil seçilmiş
Yayınlarken kullan
Deployment Mode = Framework-Dependent
Target Runtime = win-x64
Yayımlama profilinizde (bu dosyayı /Properties/PublishProfiles/YourProfileName.pubxml proje klasöründe bulabilirsiniz) profili kaydettikten sonra ihtiyacınız olacak
<EnvironmentName>Production</EnvironmentName>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
InProcess, IIS kullanırken en hızlı seçenektir. Publish'i çalıştırırken, bu, oluşturulan web.config'inizde şu şekilde olacaktır.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\YourWebApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
Aşama sunucusuna konuşlandırırken, yeni bir yayınlama profili oluşturun ve
<EnvironmentName>Staging</EnvironmentName>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
Https: // localhost: 5001'den yanıt aldığınızda / IIS değil Kestrel çalıştırıyorsunuz
Asp.net Core web barındırma paketini yüklemeyi kaçırmışsınız gibi görünüyor. Asp.net çekirdeği varsayılan olarak IIS tarafından desteklenmez, hatta onu Visual studio IIS express ile çalıştırabilirsiniz. Ayrıca, IIS, asp.net çekirdek web barındırma paketini yükleseniz bile AspNetCore işleyicisini kaydetmez.
Bu yüzden lütfen işleyiciyi ve asp.net çekirdek modülünü web.config'e kaydettiğinizden emin olun.
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyWebApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
Elbette uygulamanızı VS web dağıtım aracı ile yayınlayabilirsiniz. Projeyi yayınladığınızda bu konfigürasyonu kaydedecektir.
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1