取消

Asp.net core 发布到iis的Development环境

asp.net core 发布时默认都是Production,有时候我们有些配置是只有在Development模式才会启用,但是有需要发布出来,怎么办呢。改一下web.config文件就可以了


代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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=".\GD.SurveyDrawCG.ServicesHost.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
++    <aspNetCore processPath="dotnet" arguments=".\ServicesHost.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
++	    <environmentVariables>
++            <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
++        </environmentVariables>
++	  </aspNetCore>
    </system.webServer>
  </location>
</configuration>

如果你发布的应用(asp.net core 2.2)在IIS托管下报以下错误:

An error occurred while starting the application.
.NET Core 4.6.27110.04 X86 v4.0.0.0    |   Microsoft.AspNetCore.Hosting version 2.2.0-rtm-35687    |    Microsoft Windows 10.0.19041    |   Need help?

那你需要在web.config中去掉InProcess

1
2
-- <aspNetCore processPath="dotnet" arguments=".\GD.SurveyDrawCG.ServicesHost.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
++ <aspNetCore processPath="dotnet" arguments=".\GD.SurveyDrawCG.ServicesHost.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"  />

本文会经常更新,请阅读原文: https://dashenxian.github.io/post/Asp.net-core-%E5%8F%91%E5%B8%83%E5%88%B0iis%E7%9A%84Development%E7%8E%AF%E5%A2%83 ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 小神仙 (包含链接: https://dashenxian.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (125880321@qq.com)

登录 GitHub 账号进行评论