我正在使用Angular 7作为前端和Net Core 3.0作为后端的Web应用程序。在开发模式下,一切正常,我可以直接从浏览器和Postman以及从https://localhost:5001/api/controller/params
的前端调用URI。出于演示目的,我现在必须发布。在CLI和Visual Studio(Mac)中,一切看起来都不错:用路径project / bin / Release / netcoreapp3.0 / publish /所有.dll文件,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>
但是到目前为止,还没有运气,我没有主意。
答案 0 :(得分:0)
根据您的描述,我发现您将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