簡體   English   中英

Net Core 部署的應用程序在 IIS 上引發錯誤 404

[英]Net Core deployed app throws error 404 on IIS

我正在使用 Angular 7 作為前端和 Net Core 3.0 作為后端的網絡應用程序。 在開發模式下一切正常,我可以從前端直接從瀏覽器和郵遞員以及https://localhost:5001/api/controller/params調用 URI

出於演示目的,我必須立即發布。 從 CLI 和 Visual Studio (Mac) 看起來一切正常:使用路徑 project/bin/Release/netcoreapp3.0/publish/all the .dll files、web.config 等生成的文件夾。

但是,在 IIS 上發布時,如果我調用https://appname.myserver.com/api/controller/params或 http,瀏覽器會給我一個 404 錯誤。 如果我調用http://appname.myserver.com/,我會看到帶有不同語言的歡迎消息的藍色 IIS 屏幕。

IIS 配置遵循此處找到的 Microsoft 說明: https : //docs.microsoft.com/en-us/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio

我沒有直接發布到 IIS,因為我無權訪問服務器,但是我確實遠程監督了安裝過程。

我查看了網絡,有人建議在我的 Program.cs 文件中執行此操作:

    namespace BackEnd
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseIISIntegration();
                    webBuilder.UseKestrel();
                    webBuilder.UseUrls("http://localhost:5000", "https://localhost:5001");
                });
    }
}

web.config 看起來像這樣:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\BackEnd.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

這是 applicationHosting.config:

<site name="backendv2.hawk-poslatinoamericana.com.mx" id="10" serverAutoStart="true">
            <application path="/" applicationPool="No Managed Code" enabledProtocols="http">
                <virtualDirectory path="/" physicalPath="C:\HostingSpaces\poslatino\backendv2.hawk-poslatinoamericana.com.mx\wwwroot" />
            </application>
            <bindings>
                <binding protocol="https" bindingInformation="169.57.1.244:5001:backendv2.hawk-poslatinoamericana.com.mx" sslFlags="0" />
                <binding protocol="http" bindingInformation="169.57.1.244:5000:backendv2.hawk-poslatinoamericana.com.mx" />
                <binding protocol="http" bindingInformation="169.57.1.244:5000:www.backendv2.hawk-poslatinoamericana.com.mx" />
                <binding protocol="https" bindingInformation="169.57.1.244:5001:www.backendv2.hawk-poslatinoamericana.com.mx" sslFlags="0" />
            </bindings>
            <logFile directory="C:\HostingSpaces\poslatino\backendv2.hawk-poslatinoamericana.com.mx\logs" enabled="true" />
            <traceFailedRequestsLogging enabled="true" directory="C:\inetpub\logs\FailedReqLogFiles" maxLogFiles="50" />
            <limits connectionTimeout="00:04:00" />
        </site>

但到目前為止,沒有運氣,我沒有想法。

根據你的描述,我發現你綁定了兩個域的5000和5001端口,而不是80端口。

如果您調用https://appname.myserver.com ,它將訪問服務器的 443 端口,而不是 5000 和 5001 端口。 如果您調用http://appname.myserver.com ,它將訪問服務器的 80 端口。

此外,如果您想在 IIS 中托管 asp.net 核心應用程序,您應該首先使用以下步驟創建 Web 應用程序:

在托管系統上,創建一個文件夾以包含應用程序的已發布文件夾和文件。 在接下來的步驟中,文件夾的路徑作為應用程序的物理路徑提供給 IIS。 有關應用的部署文件夾和文件布局的詳細信息,請參閱 ASP.NET Core 目錄結構。

在 IIS 管理器中,在連接面板中打開服務器的節點。 右鍵單擊站點文件夾。 從上下文菜單中選擇添加網站。

提供站點名稱並將物理路徑設置為應用程序的部署文件夾。 提供綁定配置並通過選擇確定來創建網站:

注意:端口是80不是5001

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM