运行 IIS Express 上的 MVC6 Beta8 应用程序
Running MVC6 Beta8 app on IIS Express
我刚刚更新到 MVC6 Beta8。修复代码以再次编译几个小时后,我 运行 遇到了应用程序在 IIS Express 下无法 运行 的问题。我收到此错误消息:
[TypeLoadException: Could not load type 'Microsoft.Dnx.Host.Clr.EntryPoint' from assembly 'Microsoft.Dnx.Host.Clr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.]
System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +303
[HttpException (0x80004005): Could not load type 'Microsoft.Dnx.Host.Clr.EntryPoint' from assembly 'Microsoft.Dnx.Host.Clr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9922864
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +90
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +261
我知道托管架构发生了变化。但这是否意味着我们不能再使用 IIS express,或者这只是更新或配置更改的问题?
我是这样解决问题的:
- 从以下位置下载并安装最新的 WebToolsExtentions
http://www.microsoft.com/en-us/download/details.aspx?id=49442
- 创建一个新的 ASP.NET5 Web 应用程序项目
- 将文件从旧项目复制到新项目
我不知道如何修改现有项目。
我在升级到 beta 8 后遇到了同样的问题,并通过从 project.json
中删除以下依赖项解决了这个问题:
"Microsoft.AspNet.Server.IIS": "1.0.0-beta7"
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7"
并添加以下依赖:
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8"
我还将所有项目引用从 beta7
更新为 beta8
。
希望对您有所帮助。
IIS/IIS Express 托管模型有一些重大变化,您在升级到 beta8 时需要考虑这些变化。
在您的 project.json 文件中,从依赖项中删除这些:
- "Microsoft.AspNet.Server.IIS"
- "Microsoft.AspNet.Server.WebListener"
将以下内容添加到您的依赖项中:
- "Microsoft.AspNet.Server.Kestrel"
- "Microsoft.AspNet.IISPlatformHandler
最后,在您的 Startup.cs 文件中,将以下内容添加到 Configure 方法中:
app.UseIISPlatformHandler();
(我假设 app
是您的 IApplicationBuilder 的名称,您可以相应地进行调整)。
这会将新的 IISPlatformHandler 添加到管道并将流量定向到 Kestrel 服务器,从而绕过 IIS 和旧的 Helios dnx 主机。
您可以在 Github
上的公告中阅读此更改
这是我的方式。有人可以找到有用的东西。我将此行添加到我的 project.json:
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta8",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",
我更改了以下命令:
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
},
对此:
"commands": {
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",
"kestrel": "Microsoft.AspNet.Server.Kestrel",
},
然后 dnu restore
现在您可以使用 dnx web
或 dnx kestrel
命令 运行 您的 asp.net 应用程序。此处描述了差异:https://github.com/aspnet/Home/wiki/Servers
我刚刚更新到 MVC6 Beta8。修复代码以再次编译几个小时后,我 运行 遇到了应用程序在 IIS Express 下无法 运行 的问题。我收到此错误消息:
[TypeLoadException: Could not load type 'Microsoft.Dnx.Host.Clr.EntryPoint' from assembly 'Microsoft.Dnx.Host.Clr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.] System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +303
[HttpException (0x80004005): Could not load type 'Microsoft.Dnx.Host.Clr.EntryPoint' from assembly 'Microsoft.Dnx.Host.Clr, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9922864 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +90 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +261
我知道托管架构发生了变化。但这是否意味着我们不能再使用 IIS express,或者这只是更新或配置更改的问题?
我是这样解决问题的:
- 从以下位置下载并安装最新的 WebToolsExtentions http://www.microsoft.com/en-us/download/details.aspx?id=49442
- 创建一个新的 ASP.NET5 Web 应用程序项目
- 将文件从旧项目复制到新项目
我不知道如何修改现有项目。
我在升级到 beta 8 后遇到了同样的问题,并通过从 project.json
中删除以下依赖项解决了这个问题:
"Microsoft.AspNet.Server.IIS": "1.0.0-beta7"
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7"
并添加以下依赖:
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8"
我还将所有项目引用从 beta7
更新为 beta8
。
希望对您有所帮助。
IIS/IIS Express 托管模型有一些重大变化,您在升级到 beta8 时需要考虑这些变化。
在您的 project.json 文件中,从依赖项中删除这些:
- "Microsoft.AspNet.Server.IIS"
- "Microsoft.AspNet.Server.WebListener"
将以下内容添加到您的依赖项中:
- "Microsoft.AspNet.Server.Kestrel"
- "Microsoft.AspNet.IISPlatformHandler
最后,在您的 Startup.cs 文件中,将以下内容添加到 Configure 方法中:
app.UseIISPlatformHandler();
(我假设 app
是您的 IApplicationBuilder 的名称,您可以相应地进行调整)。
这会将新的 IISPlatformHandler 添加到管道并将流量定向到 Kestrel 服务器,从而绕过 IIS 和旧的 Helios dnx 主机。
您可以在 Github
上的公告中阅读此更改这是我的方式。有人可以找到有用的东西。我将此行添加到我的 project.json:
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta8",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",
我更改了以下命令:
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
},
对此:
"commands": {
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",
"kestrel": "Microsoft.AspNet.Server.Kestrel",
},
然后 dnu restore
现在您可以使用 dnx web
或 dnx kestrel
命令 运行 您的 asp.net 应用程序。此处描述了差异:https://github.com/aspnet/Home/wiki/Servers