C# 在未发布的完整IIS中运行ASP.NET核心应用程序会出现502.5错误
我试图在本地计算机上的IIS中托管一个ASP.NET核心应用程序,但收到一个C# 在未发布的完整IIS中运行ASP.NET核心应用程序会出现502.5错误,c#,iis,asp.net-core,C#,Iis,Asp.net Core,我试图在本地计算机上的IIS中托管一个ASP.NET核心应用程序,但收到一个502.5错误我的问题与不同,因为我没有发布我的应用程序,但(出于测试目的)试图让我的开发机器上的IIS(不是express)提供应用程序 复制: 开放VS2017 创建新的ASP.NET核心Web应用程序(.NET核心) 选择“Web API”模板和目标“ASP.NET Core 1.1”(无身份验证) 您的Main现在看起来像这样: public static void Main(string[] args) {
502.5
错误我的问题与不同,因为我没有发布我的应用程序,但(出于测试目的)试图让我的开发机器上的IIS(不是express)提供应用程序
复制:
ASP.NET核心Web应用程序(.NET核心)
Main
现在看起来像这样:
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseApplicationInsights()
.Build();
host.Run();
}
web.config
所在文件夹的路径http://localhost:8089/api/values
结果:HTTP错误502.5-进程失败预期结果:与步骤4中的结果相同
- 为应用程序池设置
标识LocalSystem
- 如果
运行(即路径上可用),请在控制台上进行检查dotnet--version
- 将
设置为processPath
%LAUNCHER\u PATH%\bin\Debug\netcoreapp1.1\WebApplication1.dll的变体
- 将
设置为指向processPath
或其位置dotnet.exe
- 重新阅读,提炼出一种方法
在发布过程中,您的项目被编译,您的
web.config
被修改为运行已编译的应用程序(不带SDK)。正如@Dmitry所说,我不确定您是否可以将IIS插入“未发布”文件夹,但还有一些事情,如中所述,您需要一个模块,使IIS能够将自身插入名为.NET Core Windows Server Hosting”,您安装了吗?您可以使用Visual Studio 15.3及更新版本的新功能,称为“开发时IIS支持”
有关新功能,请参见和。我能够使ASP.Net Core 2在开发模式下运行在IIS之后
dotnet new react-o my new app
”。按照指示运行npm安装<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe"
arguments="run --project C:\<your-path-to>\my-new-app"
stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe"
arguments="run --project C:\<your-path-to>\my-new-app"
stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</configuration>
从那里,AspNetCoreModule协调了IIS和dotnet.exe之间的交互,并设置了反向代理。作为奖励,所有的网页包编译、捆绑和热重新加载工作与“dotnet run”一样正常。我不确定自前面的回答以来是否有任何变化,因为我刚刚开始使用ASP.NET Core,但是请参阅@Sааааааа的答案。它在ASP.NET Core 3.1上对我很有效
请注意,如果不生成或发布cshtml文件,则不会反映cshtml文件中的更改。要获取Razor文件的运行时编译,以便在页面刷新后显示更改,请使用Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation,如前所述。可能重复@PranavPatel,我在问题中已经解释了它的不同之处,不是吗?我想跳过“发布”步骤,就像使用ASP.NET 4.6 MVC应用程序一样。