我们正在开发一个包含新的ASP.NET 5(vNext),EF7和AngularJS的项目,并计划在Azure上部署WebApp。
我在Azure上创建了一个新的Web应用程序,并通过Visual Studio 2015发布了我们的项目。 发布后,当我尝试测试我们的应用程序时,我会得到500 - 内部服务器错误。
我已在<customErrors mode="Off" />
web.config
中设置wwwroot
但未成功。
我已经通过FTP登录,“DetailedErrors”也没有任何有用的信息。
eventlog.xml包含以下异常:
<Events><Event><System><Provider Name="ASP.NET 4.0.30319.0"/> <EventID>1309</EventID><Level>2</Level><Task>0</Task> <Keywords>Keywords</Keywords><TimeCreated SystemTime="2015-07-28T10:54:43Z"/> <EventRecordID>280293125</EventRecordID><Channel>Application</Channel> <Computer>RD000D3A202052</Computer><Security/></System><EventData> <Data>3005</Data><Data>An unhandled exception has occurred.</Data> <Data>7/28/2015 10:54:43 AM</Data><Data>7/28/2015 10:54:43 AM</Data> <Data>9df086471c304ebfa4ddddf9ca2a2b92</Data><Data>1</Data><Data>1</Data><Data>0</Data><Data>/LM/W3SVC/2082809257/ROOT-1-130825544829782705</Data><Data></Data><Data>/</Data><Data>D:\home\site\wwwroot\</Data><Data>RD000D3A202052</Data><Data></Data><Data>2108</Data><Data>w3wp.exe</Data><Data>IIS APPPOOL\appname</Data><Data>InvalidOperationException</Data><Data>Couldn't determine an appropriate version of runtime to run. See http://go.microsoft.com/fwlink/?LinkId=517742 for more information.
at AspNet.Loader.RuntimeLocator.LocateRuntime(MapPathHelper mapPathHelper, Boolean& isCoreClr, String& relativeAppBasePath)
at AspNet.Loader.Bootstrapper.LoadApplication(String appId, String appConfigPath, IProcessHostSupportFunctions supportFunctions, LoadApplicationData* pLoadAppData, Int32 loadAppDataSize)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
at System.Web.Hosting.ProcessHost.System.Web.Hosting.IProcessHostLite.ReportCustomLoaderError(String appId, Int32 hr, AppDomain newlyCreatedAppDomain)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters) at System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException)
它说它无法确定适当的运行时版本。
在项目属性中,解决方案DNX SDK版本设置为:
project.json
中设置的框架:
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
如何获得有关错误的更多信息?
答案 0 :(得分:3)
我能够重新创建你的问题。事实证明,发布向导默认选择与应用程序的选定DNX运行时不匹配的运行时。您可以通过进入发布设置并在下拉列表中选择正确的目标DNX版本来解决此问题。在您的情况下:beta4 core-clr版本。
文件后&gt;新项目 - 我的project.json
看起来像:
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
注意 - 它使用的是core
- core clr
- 而不是完整的CLR。在为此应用设置发布时 - 它跳过默认设置:
注意 - 默认情况下,它选择了dnx-clr
,而不是core-clr
。 Beta5版本是正确的。
发布导致内部服务器错误:
我在这里找到了错误说明:
注意:这需要安装新的Azure 2.7 SDK。
此消息的有趣部分是:
<Data>DirectoryNotFoundException</Data>
<Data>Unable to find the runtime directory 'D:\home\site\wwwroot\..\approot\runtimes\dnx-clr-win-x86.1.0.0-beta5-12103'.
Possible causes:
1. The runtime was not packaged with the application.
2. The packaged runtime architecture is different from the application pool architecture.
... </Data>
所以我切换到正确的目标DNX版本并且它有效:
注意 - coreclr
版本。