我刚刚更新到MVC6 Beta8。几个小时后修复代码再次编译,我遇到了一个问题,即应用程序无法在IIS Express下运行。我收到此错误消息:
[TypeLoadException:无法从程序集'Microsoft.Dnx.Host.Clr,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'加载'Microsoft.Dnx.Host.Clr.EntryPoint'类型。 System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags,PolicyLevel policyLevel,Exception appDomainCreationException)+303
[HttpException(0x80004005):无法从程序集“Microsoft.Dnx.Host.Clr,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60”加载类型“Microsoft.Dnx.Host.Clr.EntryPoint”。 ] 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了,或者仅仅是更新或配置更改的问题?
答案 0 :(得分:6)
在升级到beta8时,您需要考虑IIS / IIS Express托管模型的一些重大更改。
在project.json文件中,从依赖项中删除它们:
将以下内容添加到您的依赖项中:
最后,在Startup.cs文件中,将以下内容添加到Configure方法:
app.UseIISPlatformHandler();
(我假设app
是您的IApplicationBuilder的名称,您可以相应调整。)
这会将新的IISPlatformHandler添加到管道并将流量定向到Kestrel服务器,从而绕过IIS和旧的Helios dnx主机。
您可以在Github
的公告中了解此更改答案 1 :(得分:5)
以下是我解决问题的方法:
我无法弄清楚如何修改现有项目。
答案 2 :(得分:1)
升级到测试版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
的所有项目引用。
希望这有帮助。
答案 3 :(得分:0)
这是我的方式。有人可以找到有用的东西。我将这些行添加到我的project.json:
"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
或SharedPreferences
命令运行您的asp.net应用程序。这里描述了不同之处:https://github.com/aspnet/Home/wiki/Servers