2009-06-02 14 views
35

Mam rolę sieci web ASP.NET MVC działa na Windows Azure i mam poprawnie skonfigurować ELMAH w web.config. Mam również mój global.asax ignorować * .axd tras. Lokalnie mogę załadować plik /elmah.axd, jednak po wdrożeniu na platformie Azure otrzymuję na tej stronie 404. Czy ktoś uzyskał ELMAH działający na platformie Azure?Jak skonfigurować ELMAH do pracy z Windows Azure? Dostaję 404 na Elmah.axd

+0

Zobacz również http://stackoverflow.com/questions/2118248/asp-net-mvc-elmah-not-working-and-returning-404-page-for-elmah-axd/5205564 –

Odpowiedz

25

Azure jest oparty na Windows Server 2008 i IIS7. Oznacza to, że musisz wypełnić część pliku system.webServer pliku web.config.

Przykładowy plik dołączony kod źródłowy ELMAH zawiera dane, które są potrzebne do wprowadzenia.

<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> 

Istnieją 2 linie ELMAH w powyższym bloku xml, które będą potrzebne w celu włączenia, a sekcja ogólnie powinien zawierać większość, jeśli nie wszystkie z tych elementów.

EDIT: Nie jest już wymagane, gdyż jest teraz domyślnie:

Dla ELMAH do pracy będzie trzeba także zmodyfikować następującą linię w pliku ServiceDefinition.csdef:

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

+0

miałem działa on lokalnie na moim komputerze z Vistą, ale na serwerze na żywo nie działał, dopóki nie dodałem 2 linii Elmah, o których wspomniałeś, na dole pliku web.config. Nie musiałem jednak wchodzić do pliku ServiceDefinition. Po wprowadzeniu tych zmian otrzymałem błąd 403, dlatego konieczne jest ustawienie opcji allowRemoteAccess na 1 – KevinUK

+0

. Oprócz tego używam zestawu Azure SDK na październik 2012 i stwierdziłem, że potrzebuję tylko (1) wpis i (2) wpis .csdef odnotowany w powyższej odpowiedzi. W porównaniu do standardowej aplikacji internetowej MVC, gdzie możesz dostać się do elmah przez "/ elmah" (w zależności od konfiguracji elmah.mvc.route) z rolą internetową MVC Azure, będzie to "/elmah/elmah.axd". Powodzenia. – Bern

+0

Funkcja enableNativeCodeExecution jest ustawiona na true domyślnie: anys: http://msdn.microsoft.com/en-us/library/windowsazure/gg557553.aspx –

9

myślę dodatkowo (co sugeruje @mat1t here) może trzeba ustawić zdalny dostęp do 1:

<elmah> 
<security allowRemoteAccess="0" /> 
.............. 
.............. 
</elmah> 
+1

dzięki, ten krok jest absolutnie konieczny –

11

Zabezpiecz również plik, aby tylko użytkownicy mogli wyświetlać dzienniki błędów!

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

Istnieje opcja web.config dla tego: , który powinien się tym zająć . – Bern

Powiązane problemy