IIS服务器 ASP.NET程序通过浏览器访问时出现 1310 错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIS服务器 ASP.NET程序通过浏览器访问时出现 1310 错误相关的知识,希望对你有一定的参考价值。

- - System
- Provider
[ Name] ASP.NET 4.0.30319.0
- EventID 1310
[ Qualifiers] 32768
Level 3
Task 3
Keywords 0x80000000000000
- TimeCreated
[ SystemTime] 2014-09-17T01:58:56.000000000Z
EventRecordID 1535
Channel Application
Computer 711-233
Security
现使用Server 2008 IIS服务器搭建后访问时出现的错误,在事件查看器中查看到的日志信息
- System
- Provider
[ Name] ASP.NET 4.0.30319.0
- EventID 1310
[ Qualifiers] 32768
Level 3
Task 3
Keywords 0x80000000000000
- TimeCreated
[ SystemTime] 2014-09-17T01:58:56.000000000Z
EventRecordID 1535
Channel Application
Security

首先检查你的权限,然后是代码,看下有没有未捕获的抛错 参考技术A 你选择ASP.NET 2.0的试试看!! 参考技术B 看看是不是.net版本引起的问题

尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19

【中文标题】尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19【英文标题】:Error 500.19 with 0x8007000d when running ASP.NET Core app in IIS despite AspNetCoreModule being installed 【发布时间】:2019-03-04 14:04:22 【问题描述】:

我有一个在 IIS Express 中运行良好的 ASP.NET Core 应用程序。同样,如果我通过dotnet run 从命令行启动应用程序,一切都会顺利进行:

C:\Code\Sandbox\IisTestApp\IisTestApp>dotnet run
Using launch settings from C:\Code\Sandbox\IisTestApp\IisTestApp\Properties\launchSettings.json...
Hosting environment: Production
Content root path: C:\Code\Sandbox\IisTestApp\IisTestApp
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.

如果我尝试以本地 IIS 为目标,则会收到以下错误:

无法启动进程 C:\Program Files\dotnet\dotnet.exe。 Web 服务器请求失败,状态码为 500,内部服务器错误。完整响应已写入 C:\Users我的用户名\AppData\Local\Temp\HttpFailure_08-05-50.html。

HTML 文件包含以下信息:

HTTP 错误 500.19 - 内部服务器错误

请求的页面无法访问,因为该页面的相关配置数据无效。

详细错误信息:

模块 IIS Web Core通知 BeginRequest处理程序尚未确定错误代码 0x8007000d配置错误配置文件 \?\C:\Code\Sandbox\IisTestApp\IisTestApp\web.config请求的 URL http://localhost:80/IisTestApp物理路径 C:\Code\Sandbox\IisTestApp\IisTestApp登录方法 尚未确定登录用户尚未确定

注意:如果该消息不明显,这是我的问题的最小重现,而不是实际的应用程序

我在网上看到的大部分内容都说错误代码0x8007000d 表明我没有.NET Core Windows Server Hosting 组件(AspNetCoreModule),但我肯定已经安装了:

我也可以在IIS的“模块”主页面中看到它,并验证它指向的文件确实存在:

奇怪的是,如果我尝试转到此特定站点的模块页面,我会收到与网页相同的错误消息:

执行此操作时出错。

详情:

文件名:\?\C:\Code\Sandbox\IisTestApp\IisTestApp\web.config 错误:

此托管模块版本 (2.1.8) 与我安装的大致匹配:

C:\Users\my user name>dotnet --list-sdks
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.504 [C:\Program Files\dotnet\sdk]

C:\Users\my user name>dotnet --list-runtimes
Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

以及我的测试应用的目标:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
  </ItemGroup>

</Project>

尽管如此,我认为问题确实与 IIS 和托管组件有关!这是使用项目模板生成的(非常默认的)web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" stdoutLogEnabled="false">
        <environmentVariables />
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

注意:如果我在 processPath 中硬编码完整路径,或者使用 .\ 相对路径,我仍然会收到相同的错误消息

如果我删除 &lt;aspNetCore&gt; 节点,我会得到一个不同的错误:

HTTP 错误 502.3 - 网关错误

尝试路由请求时出现连接错误。

详细错误信息:

模块 AspNetCoreModule通知 ExecuteRequestHandlerHandler aspNetCore错误代码 0x80070490请求的 URL http://localhost:80/IisTestApp物理路径 C:\Code\Sandbox\IisTestApp\IisTestApp登录方法 匿名登录用户匿名

重点是 AspNetCoreModule 这次抛出了错误,所以它正在被加载并运行一些代码。

发布到单独的文件夹并在 IIS 中手动设置站点(而不是依赖于创建指向“bin”文件夹的 IIS 网站的默认 Visual Studio 行为)会导致相同的错误消息,尽管我得到了生成的 web.config 文件中的aspNetCore 节点略有不同:

<aspNetCore processPath="dotnet" arguments=".\IisTestApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout">
  <environmentVariables />
</aspNetCore>

是什么导致 IIS 无法运行此应用程序?

我尝试重新安装 .NET Core(SDK、运行时和托管组件),但没有帮助。

我还注意到一些帖子提到安装 IIS 的 URL 重写模块可以纠正这个错误(特别是:HTTP Error 500.19 - IIS 7.5 Error 0x8007000d)。我的 web.config 没有提到该模块,但我尝试安装它以防 AspNetCoreModule 在幕后使用它。这对我的情况没有帮助。

【问题讨论】:

【参考方案1】:

在排除了我(以及许多有用的评论者,尤其是 Daboul)可能想到的所有特定于应用程序的内容,并查看了可见的 IIS 设置后,我求助于查看整个 IIS 的主要配置文件: applicationHost.config

根据Introduction to ApplicationHost.config,此文件位于%windir%\system32\inetsrv\config。由于真正的应用程序在我办公室的另一台机器上运行,我使用 diff 程序对它们进行了比较,发现我的配置文件中缺少以下节点:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <configSections>
        <!-- ...lots of other stuff... -->
        <sectionGroup name="system.webServer">
            <!-- ...lots of other stuff... -->

            <!--This "section" node for aspNetCore is the one that was missing-->
            <section name="aspNetCore" overrideModeDefault="Allow" />

添加一个节点解决了错误。

奇怪的是,文件后面多次引用了 AspNetCoreModule 本身。由于我之前没有手动编辑过这个文件,这似乎是第一次安装 AspNetCoreModule 时出现的某种安装错误。

【讨论】:

这个!!!!这帮了我很多忙。安装较新版本的 .net 核心运行时后面临同样的问题。尝试了一切,卸载所有 .net 框架和 .net 核心相关的 sdk、运行时和 webhosting 包并再次安装它们。没有任何效果。找到了这个,添加了这个部分,我又开始做生意了。谢谢 我正在用同样的基本问题拔掉我的头发(但使用 asp net core 3)。我相信实际问题(至少在我的情况下)是由在安装 IIS 之前安装 dotnet-hosting 引起的。在主机安装程序上运行修复(在安装 IIS 之后)为我解决了这个问题。【参考方案2】:

安装 .NET Core Hosting Bundle 为我解决了这个问题。 Here 是指向 .NET Core 托管包的链接。

使用 .NET Core 3.1

【讨论】:

在我的情况下,我必须重新安装捆绑包,即使它之前已安装并且可执行文件在那里。如果您在安装捆绑包后在 Windows 功能中打开 ISS,则可能会发生这种情况。【参考方案3】:

我尝试使用上述建议,但没有奏效。所以,我在管理员模式下重新安装了 Asp Net Core Runtime Hosting,我的 ApplicationHost.Config 得到了纠正。

【讨论】:

您看到的错误信息是什么?看看这个教程windowswebhostingreview.com/…【参考方案4】:

安装 .NET Core Hosting Bundle 解决了这个问题(如上面的答案)

在我的情况下,解决方案很简单,只需恢复 Hosting 捆绑包,它就会有所帮助。 在恢复之前我得到hresult 0x8007000d。在网络核心应用程序的 iis 中,未加载模块。

【讨论】:

【参考方案5】:

如果你安装了 .NET Core Windows Hosting Bundle,但 AspNetCoreModule 仍然没有出现在你的applicationHost.config 上,你可以试试我做的在尝试了 SO 和其他地方的所有其他解决方案之后,解决我的问题。

我在另一台服务器中发现了一个applicationHost.config,它具有这些 AspNetCoreModule 行,并在损坏的服务器上更新了文件。 不知道为什么 .NET Core 安装没有添加它们。

我在&lt;globalModules&gt; 部分下添加了以下行:

<add name="AspNetCoreModule" image="%SystemRoot%\system32\inetsrv\aspnetcore.dll" />

还有&lt;modules&gt;下面的这个:

<add name="AspNetCoreModule" />

希望这会有所帮助。

【讨论】:

【参考方案6】:

在 dot core 5.0 中,我通过安装托管包 5.0.13 解决了这个错误

https://dotnet.microsoft.com/en-us/download/dotnet/5.0

web.config

正如您在 web.config 中看到的,它使用模块“AspNetCoreModuleV2”,我在下载页面中将其标记为黄色

【讨论】:

【参考方案7】:

我在 dotnet core 3.1 上也遇到此错误。

从 web.config 应用程序中删除包装部分后开始工作:

改为:

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
     <system.webServer>
       <handlers>
          <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
       </handlers>
       <aspNetCore processPath="dotnet" arguments=".\ContactForm.Microservice.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
     </system.webServer>
  </configuration>

【讨论】:

以上是关于IIS服务器 ASP.NET程序通过浏览器访问时出现 1310 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 应用程序访问托管在 IIS 上的 WCF 服务时出现问题

DLL 无法访问 IIS 内部用于 ASP.NET 应用程序的数据库

写入事件日志时出现System.Security.SecurityException

尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19

请问IIS中如何部署asp.net项目?

C# WCF 元数据端点不工作(IIS 和 ASP.NET 开发服务器)