Windows Azure와 함께 작동하도록 Elmah를 구성하는 방법은 무엇입니까? Elmah.axd에서 404를 얻습니다

StackOverflow https://stackoverflow.com/questions/939783

문제

Windows Azure에서 ASP.NET MVC 웹 역할을 실행 중이며 Web.config에서 Elmah를 올바르게 설정했습니다. 또한 Global.asax는 *.axd 경로를 무시합니다. 로컬로, /elmah.axd를로드 할 수 있지만 Azure에 배포하면 해당 페이지에서 404를 얻습니다. Azure에서 일하는 Elmah를 얻은 사람이 있습니까?

도움이 되었습니까?

해결책

Azure는 Windows Server 2008 및 IIS7을 기반으로합니다. 즉, web.config 파일의 System.WebServer 부분을 채워야합니다.

Elmah의 소스 코드에 포함 된 샘플 파일에는 입력해야 할 세부 정보가 포함되어 있습니다.

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <remove name="ScriptModule" />
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  </modules>
  <handlers>
    <remove name="WebServiceHandlerFactory-Integrated"/>
    <remove name="ScriptHandlerFactory" />
    <remove name="ScriptHandlerFactoryAppServices" />
    <remove name="ScriptResource" />
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add name="elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
  </handlers>
</system.webServer>

위의 XML 블록에는 포함해야 할 엘마 라인이 2 개이며, 일반적으로 섹션에는 어쨌든 모든 요소가 아니더라도 대부분이 포함되어야합니다.

편집 : 더 이상 필요하지 않아서 이제는 기본적으로 다음과 같습니다.

Elmah가 작동하려면 serviceedefinition.csdef 파일에서 다음 줄을 수정해야합니다.

<WebRole name="WebRole" enableNativeCodeExecution="true">

다른 팁

또한 파일을 확보하여 사용자가 오류 로그를 볼 수 있도록 허용됩니다!

<location path="admin/elmah.axd">
    <system.web>
        <authorization>
            <allow roles="Administrator" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

나는 추가로 (제안한 것에 대해 여기 @mat1t) 1에 원격 액세스를 설정해야 할 수도 있습니다.

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top