在IIS 7中托管Asp.Net Core

3
我有一台较老的服务器,已经安装了最新的Internet Information System (IIS)核心Web-Hosting模块。服务器应该是最新的。
出于某种奇怪的原因,我收到以下错误:
HTTP Error 500.19 - 内部服务器错误,无法读取配置节“aspNetCore”,因为缺少节声明。
web.config如下:
<?xml version="1.0" encoding="utf-8">
<configuration>
     <system.webServer>
          <handlers>
               <add name="aspNetCore path="*" verb="*"
                    modules="AspNetCoreModule" resourceType="Unspecified" />
          </handlers>
          <aspNetCore processPath="dotnet" arguments=".\LicenseManager.dll"
               stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
     </system.webServer>
</configuration>

我确信应用程序池已正确配置并具有目录的适当权限,应用程序池也设置为无托管代码,并且已配置绑定。

文档还指出它确实符合Windows Server 2008 R2的要求,并得到支持,其中包括IIS 7.0。

我已运行它们的命令,您认为为什么无法发布?


我不了解Asp.Net Core,但通常如果您向web.config添加非标准部分,则必须注册配置部分处理程序。请参见此答案https://dev59.com/3GIj5IYBdhLWcg3wnmXA#20066794和相关问题以获取想法。 - devio
@DouglasThomas 这是Windows Server 2008 R2,文档上说它可以工作。不过那个链接很好,我最终在Windows Server 2012上安装了它,并向微软提交了一个关于为什么它不能正常工作的工单。 - Greg
@Greg 你确定它可以在Windows 2008 R2上运行吗?我曾尝试在我的Windows Server 2008上安装它,但是无法运行。错误显示版本不兼容。我现在使用的是Windows Server 2012,没有任何问题。 - user1229931
@DouglasThomas 点击文档,选择支持的操作系统,它会列出来。 - Greg
1个回答

3

如果有帮助的话,我在一个2008R2上,使用IIS7.5,但是使用ASP.NET Core构建于.NET 452之上,我遇到了这个问题:

<aspNetCore 
    requestTimeout="00:20:00" 
    processPath=".\MyProject.exe" arguments="" 
    stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" 
    forwardWindowsAuthToken="true">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="development" /> <!-- value could be "development", "staging" or "production"-->
  </environmentVariables>
</aspNetCore>

此外,如果您使用IIS,您是否真正看到已安装.NET Core模块:enter image description here并且您能否使用配置编辑器浏览您的web.config内容?更新:您已更改问题并添加了“,因此我将在我的答案中删除此部分。

没有 .NET 环境可以编译的非托管代码,如何处理原始核心? - Greg
我目前没有运行这个,所以无法确定,但我预计它会很相似:您需要安装并在IIS下运行AspNetCoreModule,仍然需要能够通过IIS“配置编辑器”解析web.config,主要区别应该是使用完整的.NET时processPath/arguments将直接为“myexe” /“”,而编译为.NET CORE时将为“dotnet” /“mydll.dll”。在您的情况下,我猜测在命令行下启动“dotnet mydll.dll”可以正常工作?如果是这样,那就只是IIS配置的问题。 - Daboul
我有这个模块,但奇怪的是它几乎像是IIS在配置上出了问题。 - Greg
也许<environmentVariables>和forwardWindowsAuthToken=""是必需的。你是否尝试尽可能地更改你的web.config文件,使其与我的类似,而我的实际上是有效的? - Daboul
实际上,web.config 在另一台运行 Windows Server 2012 的服务器上可以正常工作。因此,我将尝试重新安装核心模块,因为它无法读取 web.config。 - Greg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接