我试图在我的本地机器上的IIS中托管ASP.NET Core应用程序,我得到了一个502.5
错误。**我的问题与"ASP.NET Core 1.0 on IIS error 502.5"**不同,因为我 * 不是 * 发布我的应用程序,而是(出于测试目的)试图让我的开发机器上的IIS(而不是express)提供应用程序。
复制:
1.打开VS 2017
1.创建新的ASP.NET Core Web Application (.NET Core)
1.选择“Web API”模板并以“ASP.NET Core 1.1”为目标(无身份验证)
你的Main
现在看起来像这样:
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseApplicationInsights()
.Build();
host.Run();
}
字符串
你的csproj看起来像这样:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
</Project>
型
1.按F5运行,localhost:6565/api/values
打开
1.将“Web配置文件”添加到项目的根目录
1.取消注解system.webServer
部分,如下所示:
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
型
1.打开IIS管理器GUI
1.选择“添加网站”,选择名称和端口,设置web.config
所在文件夹的路径
1.根据Microsoft's instructions,将应用程序池的“.NET版本”设置为“无托管代码”
1.浏览到新应用程序,例如http://localhost:8089/api/values
结果:HTTP错误502.5 -进程失败
预期结果:与步骤4相同。
我试图排除the top answer中提到的所有原因,以解决另一个问题:
- 为应用程序池设置
LocalSystem
标识 - 在控制台上检查
dotnet --version
是否运行(即在PATH上可用)
此外,我还尝试了一些其他的东西:
- 将
processPath
设置为"%LAUNCHER_PATH%\bin\Debug\netcoreapp1.1\WebApplication1.dll
的变体 - 将
processPath
设置为指向dotnet.exe
或其位置 - 重新阅读the docs以提炼出一种方法来做到这一点。
在.NET Framework上使用ASP.NET MVC应用程序,您可以在指向MVC项目文件夹的完整IIS中启动一个新网站,并且它会“正常工作”。
你需要做些什么才能让它在ASP.NET Core中工作?有没有可能在不发布的情况下让这个流工作?
6条答案
按热度按时间lf3rwulv1#
我遵循@Jim Lowrey的回答,并遵循一些额外的步骤:
mbyulnm02#
你需要做些什么才能让它与ASP.NETCore一起工作
执行all required instructions,不仅是你喜欢的部分。你应该做发布。
有没有可能在不发布的情况下让这个流程工作?
号
在发布过程中,您的项目会被编译,您的
web.config
会被修改以运行编译后的应用程序(没有SDK)。laximzn53#
您可以使用Visual Studio 15.3及更新版本的新功能
Development time IIS support
。请参阅related issue和blog post的新功能。
khbbv19g4#
我能够让ASP.NetCore2在IIS后面以开发模式运行。
1.建立新的. net应用程序。例如,从tutorial执行'
dotnet new react -o my-new-app
'。请依照指示执行npm install。1.安装AspNetCoreModule。“
1.在IIS中,建立不含Managed程式码的新网站,并将应用程序集区设定为在LocalSystem下执行。写入C:\WINDOWS\system32\config\systemprofile时需要此设定。请将实体路径设定为步骤1所建立的目录。
1.将下面的web.config文件放在步骤1中的目录中。
字符串
AspNetCoreModule从那里协调IIS和dotnet.exe之间的交互,并设置反向代理。作为一个额外的好处,所有的webpack编译、绑定和热重新加载的工作方式就像它们在“dotnet run”中所做的那样。
eit6fx6z5#
正如@Dmitry所说,我不确定你是否可以将IIS插入到一个“未发布”的文件夹中,但还有更多的东西,正如https://learn.microsoft.com/en-us/aspnet/core/publishing/iis中所述,你需要一个模块来使IIS能够将自己插入到一个名为“.NET Core Windows Server Hosting”的ASP.NET Core模块中,你安装了吗?
wsxa1bj16#
我不确定是否有什么改变,因为我刚刚开始使用ASP.NET Core,但请参阅@Sна н а т о н а н的答案here。它只是为我在ASP.NET Core 3.1工作。
请注意,如果不生成或发布,cshtml文件中的更改将不会反映出来。要获取Razor文件的运行时编译,以便在页面刷新后显示更改,请按照here的说明使用Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation。