“요청을 처리하는 동안 예외가 발생했습니다. 또한 사용자 지정 오류 페이지를 실행하는 동안 또 다른 예외가 발생했습니다…”


104

MVC 웹 사이트를 Azure 웹 역할로 게시하려고합니다.

로컬에서 실행하면 모든 것이 잘 작동합니다.

하지만 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>

이 예외의 원인은 무엇이며 로컬에서 재현 할 수없는 이유는 무엇입니까?


41
당신의 실수는 오류를 발생시킵니다. 그 심각한 문제 :)
Jack

관리 포털에서 자세한 오류 로깅을 활성화하고 FTP 사이트의 로그를 검토하는 것이 좋습니다.
Jakub Konecki 2013 년

레이아웃에 범인이 될 수있는 것이 있습니까?
drch

@drch 아니요, 마지막으로 작동 한 이후 레이아웃에서 변경된 사항이 없습니다.
Ilya Kogan 2013 년

답변:


213

먼저 web.config에서 customErrors = "Off"를 설정하고 다시 배포하여 문제 진단에 도움이되는 자세한 오류 메시지를 가져옵니다. 또한 인스턴스로 RDP하고 IIS에서 로컬로 사이트를 검색하여 오류를 볼 수도 있습니다.

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

첫 번째 추측-Copy Local = true로 설정되지 않은 일부 참조 (대부분 Azure SDK 참조)가 있습니다. 따라서 모든 종속성이 배포되지 않습니다.

먼저 자세한 오류를 확인하고 질문을 업데이트하십시오.

업데이트 : 이제 VS2013에서 사용할 수있는 두 번째 옵션 은 클라우드 서비스 또는 가상 머신 원격 디버깅 입니다.


12
customErrors를 "off"로 설정하면 마침내 몇 가지 실제 예외가 나타납니다. 지금 조사 중입니다.
Ilya Kogan 2013 년

1
그것이 IIS 오류의 결과로 이후로, 당신은 대체 라로 너무 그들을 사용자 정의 할 수 있습니다 benfoster.io/blog/aspnet-mvc-custom-error-pages
drzaus

내 customErrors가 "꺼짐"이지만 "죄송합니다. 요청을 처리하는 동안 오류가 발생했습니다."라는 메시지가 계속 표시됩니다. 오류. 여기서 도와 주 시겠어요? @Ilya 년 Kogan
GuiPab

1
단순히 customerror = off로 설정하면 웹 사이트 솔루션을 다른 웹 사이트의 템플릿으로 사용하고 bin 폴더를 지우는 것을 잊었 기 때문에 오류가 발생했음을 알 수있었습니다. 즉, 복제 문제였습니다.
Paul Zahra

7

Azure를 사용하지 않았지만 로컬에서 동일한 오류가 발생했습니다. 사용하는 <customErrors mode="Off" />것이 효과가없는 것 같았지만 이벤트 뷰어에서 응용 프로그램 로그를 확인하면 문제 해결에 필요한 모든 세부 정보가 포함 된 ASP.NET의 경고가 표시되었습니다.


3

이를 web.config 변환 파일에 추가하면 디버깅을 활성화 또는 비활성화하도록 특정 게시 옵션을 설정할 수도 있습니다.

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

1

IIS에 게시하는 경우, 웹 배포에 의해, 난 그냥 확인 파일이 옵션 게시 및 실행을. 이제 작동합니다! 이 배포 후에는 확인란을 선택할 필요가 없습니다. 나는 이것이 모든 사람을위한 해결책이 될 수 없다고 생각하지만 내 문제를 해결하기 위해 내가해야 할 유일한 일이다. 행운을 빕니다.


0

나는 redirectMode="ResponseRewrite"( redirectMode="ResponseRedirect"잘 작동) 에서만이 문제가 있었고 위의 해결책 중 어느 것도 문제 해결에 도움이되지 않았습니다. 그러나 서버의 응용 프로그램 풀의 "관리 파이프 라인 모드"를 "클래식"에서 "통합"으로 변경하면 사용자 지정 오류 페이지가 예상대로 나타납니다.


-1

대신 Oracle.ManagedDataAccess.dll을 사용하고 (Oracle에서 다운로드) 해당 dll을 프로젝트 bin dir에 포함하고 프로젝트에서 해당 dll에 대한 참조를 추가 할 수 있습니다. 코드에서 "Oracle.MangedDataAccess.Client 사용". 평소와 같이 프로젝트를 서버에 배포합니다. 서버에 Oracle 클라이언트를 설치할 필요가 없습니다. web.config에 어셈블리 정보를 추가 할 필요가 없습니다.


2
오라클이이 그림에 어떻게 등장합니까?
Aamol
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.