“处理请求时发生异常。此外,在执行自定义错误页时发生另一个异常...”

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

When I run it locally, everything works fine.

但是,一旦我把它发布到 Azure 上,浏览一些 MVC 动作,我就会得到这个错误:

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

运行时错误

说明: 处理请求时发生异常。 此外,在执行自定义 第一个异常的错误页。请求已终止。

我不明白错误处理程序怎么会遇到异常,因为错误是以默认方式处理的:

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

This is my 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>

是什么导致了这个异常,为什么我不能在本地重现它?

268286 次浏览

First, set customErrors = "Off" in the web.config and redeploy to get a more detailed error message that will help us diagnose the problem. You could also RDP into the instance and browse to the site from IIS locally to view the errors.

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

First guess though - you have some references (most likely Azure SDK references) that are not set to Copy Local = true. So, all your dependencies are not getting deployed.

首先找到详细的错误并更新你的问题。

更新: VS2013中的第二个选项是 远程调试云服务或虚拟机

我没有使用 Azure,但是在本地得到了相同的错误。使用 <customErrors mode="Off" />似乎没有什么效果,但是检查事件查看器中的应用程序日志时会发现来自 ASP.NET 的警告,其中包含了解决这个问题所需的所有细节。

我有这个问题只与 redirectMode="ResponseRewrite"(redirectMode="ResponseRedirect"工作良好) ,以上的解决方案都没有帮助我解决这个问题。但是,一旦我将服务器的应用程序池的“托管管道模式”从“经典”更改为“集成”,自定义错误页面就会按预期出现。

如果您将其添加到 web.config 转换文件中,还可以将某些发布选项设置为启用或禁用调试:

<system.web>
<customErrors mode="Off" defaultRedirect="~/Error.aspx" xdt:Transform="Replace"/>
</system.web>

你可以用甲骨文。改为 ManagedDataAccess.dll (从 Oracle 下载) ,在项目 bin 目录中包含该 dll,并在项目中添加对该 dll 的引用。在代码中,“使用 Oracle。MangedDataAccess.客户」。像往常一样将项目部署到服务器。不需要在服务器上安装 Oracle 客户端。不需要在 web.config 中添加汇编信息。

当发布到 IIS 时,通过 Web 部署,我刚查过了文件发布选项并执行。现在成功了!在此部署之后,不需要选中复选框。我不认为这能解决所有人的问题,但这是我唯一需要做的事情来解决我的问题。祝你好运。