“处理您的请求时发生exception。 另外,执行自定义错误页面时发生另一个exception…“

我试图发布一个MVC网站作为一个Azure的webrole。

当我在本地运行它时,一切正常。

但是,一旦我发布到Azure,并冲浪到一些MVC行动,我得到这个错误:

“/”应用程序中的服务器错误。

运行时错误

说明:处理您的请求时发生exception。 此外,执行第一个exception的自定义错误页面时发生另一个exception。 该请求已被终止。

我不明白error handling程序如何能够遇到一个exception,因为错误是以默认方式处理的:

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> 

什么可以导致这个exception,为什么我不能在本地重现呢?

首先,在web.config中设置customErrors =“Off”,并重新部署以获取更详细的错误消息,这将有助于我们诊断问题。 您也可以将RDP添加到实例中,并从本地浏览到IIS站点以查看错误。

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

首先猜测 – 你有一些没有设置为Copy Local = true的引用(很可能是Azure SDK引用)。 所以,你所有的依赖没有被部署。

首先得到详细的错误,并更新您的问题。

更新:现在在VS2013中可用的第二个选项是远程debugging云服务或虚拟机 。

我没有使用Azure,但是我在本地得到了同样的错误。 使用<customErrors mode="Off" />似乎没有任何作用,但是在事件查看器中检查应用程序日志显示了ASP.NET的警告,其中包含解决问题所需的所有详细信息。

确保您清除了ModelState错误,否则将继续尝试处理它们。

 foreach (var modelValue in ModelState.Values) { modelValue.Errors.Clear(); } 

包括这些东西在你的WEB.CONFIG INSIDE system.web标签和安装安全=假如你的用户名和密码或提供的是真实的。

  <authentication mode="Forms"> <forms loginUrl="~/account/login" defaultUrl="~/Home/Index"></forms> 
 <customErrors mode="On" defaultRedirect="Error"/> <compilation targetFramework="4.6" /> <httpRuntime targetFramework="4.6" /> <httpModules> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> </httpModules> 
Interesting Posts