2015-07-29 19 views
9

Chúng tôi đang làm việc trên một dự án với ASP.NET 5 mới (vNext), EF7 và AngularJS và có kế hoạch triển khai WebApp trên Azure.ASP.NET 5 (vNext) gây ra lỗi 500 - Lỗi máy chủ nội bộ trên Azure

Tôi đã tạo một Ứng dụng web mới trên Azure và xuất bản dự án của chúng tôi qua Visual Studio 2015. Sau khi xuất bản, tôi sẽ gặp lỗi máy chủ nội bộ 500 khi tôi thử kiểm tra ứng dụng của mình.

Tôi đã đặt <customErrors mode="Off" /> trong web.config trong wwwroot mà không thành công. Sau đó tôi đã đăng nhập qua FTP và "DetailsErrors" cũng không chứa bất kỳ thông tin hữu ích nào.

Các eventlog.xml chứa ngoại lệ sau đây:

<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&amp; isCoreClr, String&amp; 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) 

Nó nói rằng nó không thể xác định một phiên bản thích hợp của thời gian chạy.

Trong các tính chất dự án giải pháp phiên bản DNX SDK được thiết lập để:

  • 1.0.0-beta4
  • .NET Framework
  • x86

Các khung thiết lập trong project.json:

"frameworks": { 
    "dnx451": { }, 
    "dnxcore50": { } 
}, 

Làm cách nào để có thêm thông tin về lỗi?

+1

Nếu bạn kiểm tra thư, bạn sẽ thấy rằng IIS phàn nàn rằng nó không thể tìm thấy phiên bản thời gian chạy thích hợp ('Không thể xác định phiên bản thời gian chạy thích hợp để chạy.'). Trong dòng đầu tiên nó đề cập đến 'ASP.NET 4.0.30319.0'. Bạn đã xuất bản dự án ở đâu và như thế nào? Bạn đã cài đặt các phiên bản thời gian chạy thích hợp chưa? –

+0

Thử đặt 'config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;' –

+0

@PanagiotisKanavos làm cách nào để cài đặt phiên bản thời gian chạy thích hợp trên Azure WebApp? (không phải máy ảo) –

Trả lời

3

Tôi đã có thể tạo lại sự cố của bạn. Hóa ra rằng trình thủ thuật xuất bản chọn một thời gian chạy theo mặc định không khớp với thời gian chạy DNX đã chọn của ứng dụng. Bạn có thể khắc phục điều này bằng cách truy cập cài đặt xuất bản và chọn Phiên bản DNX đích trong trình đơn thả xuống. Trong trường hợp của bạn: phiên bản beta-core-clr.

Sau file> dự án mới - project.json của tôi trông giống như:

"frameworks": { 
    "dnx451": { }, 
    "dnxcore50": { } 
}, 

LƯU Ý - nó sử dụng core - các core clr - không phải là đầy đủ CLR. Trong khi lập bản cho ứng dụng này - Nó nhảy qua các thiết lập mặc định ở đây:

publish wizard selects NON core clr by default

LƯU Ý - theo mặc định nó chọn dnx-clr, không core-clr. Phiên bản beta5 là chính xác mặc dù.

xuất bản dẫn đến một lỗi Internal Server:

Good old yellow and red ASPNET error message

Tôi tìm thấy mô tả lỗi ở đây:

Error description

Chú ý: điều này đòi hỏi các Azure mới 2.7 SDK được cài đặt.

Phần thú vị của bài này là:

<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> 

Vì vậy, tôi chuyển sang phiên bản Target DNX chính xác và nó làm việc:

enter image description here

LƯU Ý - phiên bản coreclr.

Các vấn đề liên quan