IIS Express 中的 appDomainCreationException 使用 ASP.NET 5 beta7
appDomainCreationException in IIS Express using ASP.NET 5 beta7
将我的应用程序更新到 beta7 后,我无法使用浏览器中的视图或在调试器中 运行 从 IIS Express 中 运行 它,它在浏览器中显示此异常但没有' 使用调试器中断我的代码中的任何异常:
[异常:应用程序意外失败。状态代码“-2147024894”。]
System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +361
[HttpException (0x80004005): Unexpected application failure. Status code '-2147024894'.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +579
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +120
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +712
我能够从命令行使用 dnx web 运行 它,没有任何错误。
我尝试了一个使用 vs 模板的新网络应用程序,那个 运行 在 IIS Express 中很好,所以它一定是关于我的应用程序的特定内容,但我不知道是什么,因为它不会因我的任何错误而中断在调试器中 运行ning 时的代码。
任何人都知道是什么导致了这个问题,或者检查我的应用程序或配置可以解决什么问题?
请注意,dnvm 列表将我的默认 运行 时间显示为 beta7 coreclr x64,这也是我在网络应用程序属性和 global.json 中设置的特定 运行 时间
经过多次调试,我发现问题是因为它并没有真正使用 beta7 启动应用程序,它实际上使用的是 beta6 运行时,即使项目、我的配置文件和 global.json 都已配置使用 beta7.
这样做的原因是因为我的 wwwroot 文件夹中有一个 Web.config 文件,其中包含以下 appSettings:
<appSettings>
<add key="bootstrapper-version" value="1.0.0-beta6" />
<add key="dnx-version" value="1.0.0-beta6" />
<add key="dnx-clr" value="coreclr" />
</appSettings>
将这些更新到 beta7 后,它现在可以在 IIS 中正常工作了。
它从命令行运行的原因是因为 web.config 仅供 IIS 使用
我遇到了同样的问题。我使用 dot net 版本管理器安装了一个新的运行时环境:
dnvm install latest -r coreclr -arch x64
安装并使用了 1.0.0-beta7 coreclr x64
然后在我的解决方案中global.json我将sdk设置为beta7版本
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-beta7"
}
}
我得到了 [Exception: Unexpected application failure. Status code '-2147024894'.]
您的回答为我指明了正确的方向。好像IIS不匹配..
所以我去了我的 project.json
并将 AspNet.Server 的依赖项设置为正确的版本 1.0.0-beta7
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini"
},
"frameworks": {
"dnxcore50": { }
},
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
]
}
然后应用程序在 iis express 下正常运行。
请注意,在 VS2015 ASP.NET 5 个项目中,IIS Express 配置位于 <path_to_solution>\.vs\config\applicationhost.config
,但由于它是自动生成的文件夹,因此无需在此处修改任何内容。
此外,我不确定为什么您在 wwwroot 文件夹下有一个配置文件,但它似乎不是托管配置文件的安全位置,因为如果我没记错的话,它是网络服务器公开的静态文件夹.
将我的应用程序更新到 beta7 后,我无法使用浏览器中的视图或在调试器中 运行 从 IIS Express 中 运行 它,它在浏览器中显示此异常但没有' 使用调试器中断我的代码中的任何异常:
[异常:应用程序意外失败。状态代码“-2147024894”。] System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +361
[HttpException (0x80004005): Unexpected application failure. Status code '-2147024894'.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +579
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +120
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +712
我能够从命令行使用 dnx web 运行 它,没有任何错误。 我尝试了一个使用 vs 模板的新网络应用程序,那个 运行 在 IIS Express 中很好,所以它一定是关于我的应用程序的特定内容,但我不知道是什么,因为它不会因我的任何错误而中断在调试器中 运行ning 时的代码。
任何人都知道是什么导致了这个问题,或者检查我的应用程序或配置可以解决什么问题?
请注意,dnvm 列表将我的默认 运行 时间显示为 beta7 coreclr x64,这也是我在网络应用程序属性和 global.json 中设置的特定 运行 时间
经过多次调试,我发现问题是因为它并没有真正使用 beta7 启动应用程序,它实际上使用的是 beta6 运行时,即使项目、我的配置文件和 global.json 都已配置使用 beta7.
这样做的原因是因为我的 wwwroot 文件夹中有一个 Web.config 文件,其中包含以下 appSettings:
<appSettings>
<add key="bootstrapper-version" value="1.0.0-beta6" />
<add key="dnx-version" value="1.0.0-beta6" />
<add key="dnx-clr" value="coreclr" />
</appSettings>
将这些更新到 beta7 后,它现在可以在 IIS 中正常工作了。
它从命令行运行的原因是因为 web.config 仅供 IIS 使用
我遇到了同样的问题。我使用 dot net 版本管理器安装了一个新的运行时环境:
dnvm install latest -r coreclr -arch x64
安装并使用了 1.0.0-beta7 coreclr x64
然后在我的解决方案中global.json我将sdk设置为beta7版本
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-beta7"
}
}
我得到了 [Exception: Unexpected application failure. Status code '-2147024894'.]
您的回答为我指明了正确的方向。好像IIS不匹配..
所以我去了我的 project.json
并将 AspNet.Server 的依赖项设置为正确的版本 1.0.0-beta7
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini"
},
"frameworks": {
"dnxcore50": { }
},
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
]
}
然后应用程序在 iis express 下正常运行。
请注意,在 VS2015 ASP.NET 5 个项目中,IIS Express 配置位于 <path_to_solution>\.vs\config\applicationhost.config
,但由于它是自动生成的文件夹,因此无需在此处修改任何内容。
此外,我不确定为什么您在 wwwroot 文件夹下有一个配置文件,但它似乎不是托管配置文件的安全位置,因为如果我没记错的话,它是网络服务器公开的静态文件夹.