Asp.net-Mvc

“處理您的請求時發生異常。此外,執行自定義錯誤頁面時發生另一個異常……”

  • June 24, 2013

我正在嘗試將 MVC 網站發佈為 Azure webrole。

當我在本地執行它時,一切正常。

但是一旦我將它發佈到 Azure 並瀏覽一些 MVC 操作,我就會收到這個錯誤:

“/”應用程序中的伺服器錯誤。

執行時錯誤

描述:處理您的請求時發生異常。此外,在執行第一個異常的自定義錯誤頁面時發生了另一個異常。請求已終止。

我不明白錯誤處理程序如何遇到異常,因為錯誤是以預設方式處理的:

public class FilterConfig
{
   public static void RegisterGlobalFilters(GlobalFilterCollection filters)
   {
       filters.Add(new HandleErrorAttribute());
   }
}

這是我的 web.config:

<?xml version="1.0"?>

<configuration>
 <configSections>
   <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
   </sectionGroup>
 </configSections>

 <system.web.webPages.razor>
   <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
   <pages pageBaseType="System.Web.Mvc.WebViewPage">
     <namespaces>
       <add namespace="System.Web.Mvc" />
       <add namespace="System.Web.Mvc.Ajax" />
       <add namespace="System.Web.Mvc.Html" />
       <add namespace="System.Web.Routing" />
     </namespaces>
   </pages>
 </system.web.webPages.razor>

 <appSettings>
   <add key="webpages:Enabled" value="false" />
 </appSettings>

 <system.web>
       <httpHandlers>
     <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
   </httpHandlers>

   <pages
       validateRequest="false"
       pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
       pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
       userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
     <controls>
       <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
     </controls>
   </pages>
 </system.web>

 <system.webServer>
   <validation validateIntegratedModeConfiguration="false" />

   <handlers>
     <remove name="BlockViewHandler"/>
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
   </handlers>
 </system.webServer>
</configuration>

這是 Error.cshtml:

@model System.Web.Mvc.HandleErrorInfo

@{
   ViewBag.Title = "Error";
}

<h2>
   Sorry, an error occurred while processing your request.
</h2>

什麼會導致這個異常,為什麼我不能在本地重現它?

首先,在 web.config 中設置 customErrors = “Off” 並重新部署以獲得更詳細的錯誤消息,這將有助於我們診斷問題。您還可以 RDP 進入實例並在本地從 IIS 瀏覽到該站點以查看錯誤。

<system.web>
     <customErrors mode="Off" />

首先猜測 - 您有一些未設置為 Copy Local = true 的引用(很可能是 Azure SDK 引用)。因此,您的所有依賴項都沒有被部署。

首先獲取詳細的錯誤並更新您的問題。

更新:VS2013 現在提供的第二個選項是遠端調試雲服務或虛擬機

引用自:https://stackoverflow.com/questions/17274481