当我从Visual Studio(在IIS Express中)在我的计算机上运行它时工作得很好。但是当我尝试在我的服务器(WS 2012,IIS 8)上托管该网站时,该页面将永远加载。
我在日志中发现了这个错误:
C:\iis\beta\wwwroot>SET DNX_FOLDER=dnx-clr-win-x86.1.0.0-rc1-update1
C:\iis\beta\wwwroot>SET "LOCAL_DNX=C:\iis\beta\approot\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe"
C:\iis\beta\wwwroot>IF EXIST C:\iis\beta\approot\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe (SET "DNX_PATH=C:\iis\beta\approot\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe" )
C:\iis\beta\wwwroot>for %a in ((null)) do (IF EXIST %a\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe (
SET "HOME_DNX=%a\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe"
goto :continue
) )
C:\iis\beta\wwwroot>IF "" NEQ "" (SET "DNX_PATH=" )
C:\iis\beta\wwwroot>IF "C:\iis\beta\approot\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe" == "" (SET "DNX_PATH=dnx.exe" )
Error: Unable to load application or execute command 'Microsoft.AspNet.Server.Kestrel'. Available commands: web, ef.
System.IO.FileNotFoundException: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadFile(String assemblyPath)
at Microsoft.Dnx.Runtime.Loader.PackageAssemblyLoader.Load(AssemblyName assemblyName, IAssemblyLoadContext loadContext)
at Microsoft.Dnx.Runtime.Loader.PackageAssemblyLoader.Load(AssemblyName assemblyName)
at Microsoft.Dnx.Host.LoaderContainer.Load(AssemblyName assemblyName)
at Microsoft.Dnx.Host.DefaultLoadContext.LoadAssembly(AssemblyName assemblyName)
at Microsoft.Dnx.Runtime.Loader.AssemblyLoaderCache.GetOrAdd(AssemblyName name, Func`2 factory)
at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadAssemblyImpl(AssemblyName assemblyName)
at Microsoft.Dnx.Runtime.Loader.LoadContext.ResolveAssembly(Object sender, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
这是我的project.json:
{
"webroot": "wwwroot",
"userSecretsId": "aspnet5-gplayweb-11fc9aea-7741-4cff-ba1f-fc74dfb7600b",
"version": "1.0.0-*",
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
"Microsoft.AspNet.Session": "1.0.0-rc1-final",
"MySql.Data": "6.9.8"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
答案 0 :(得分:6)
我通过从approot \ src \ website \。
中删除global.json来解决问题答案 1 :(得分:1)
以F Andrei的答案为基础。可以将此片段放在项目文件中,以在每个文件系统发布后删除global.json。
<Target Name="AfterFileSystemPublish" AfterTargets="FileSystemPublish" Condition="'$(publishUrl)' != ''">
<!--
remove the src/*/global.json file as it prevents the web site from starting under IIS
-->
<Message Text="Workaround: Removing $(publishUrl)\approot\src\$(ProjectName)\global.json" Importance="high"/>
<Exec WorkingDirectory="$(ProjectDir)" Command="del $(publishUrl)\approot\src\$(ProjectName)\global.json"/>
</Target>
答案 2 :(得分:0)
请确保您在服务器上安装了HttpPlatformHandler。您的应用程序池应配置为“无管理代码”
也可以在Configure方法的启动文件中确保您拥有以下行
application.UseIISPlatformHandler();
答案 3 :(得分:0)
起初问题看起来并不那么明显。我遇到了同样的错误,经过一番努力后得出了解决方案。