Zabezpieczanie Elmah w ASP.NET strona www

Mam problem z zabezpieczeniem ELMAH. Śledziłem Phila Haackera tutorial, z tą jedyną różnicą, że projekt demo jest aplikacją internetową, a mój projekt jest stroną internetową.

   <add verb="POST,GET,HEAD" path="/admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

   <location path="admin">
        <system.web>  
            <authorization>  
                <deny users="?"/>  
            </authorization>  
        </system.web> 
    </location>

Z wiodącym " / "otrzymuję odpowiedź, że" zasobu nie można znaleźć.", jeśli usunę wiodący " / " wszystko działa dobrze, z wyjątkiem uwierzytelniania można ominąć, dodając nazwę katalogu przed /admin / elmah.axd.

Na przykład bez wiodącej "/"

Www.mysite.com/admin/elmah.axd - uruchamia uwierzytelnianie
www.mysite.com/asdasdasd/admin/elmah.axd - nie uruchamia uwierzytelniania i wyświetla ELMAH

Jak mogę zapewnić bezpieczeństwo ELMAH, zachowując możliwość zdalnego przeglądania dziennika?

Dzięki.

Uwaga dla innych:
Następujące odpowiedzi Alan poniżej skutkuje w następujący sposób.

Www.mysite.com/admin/elmah.axd -wyzwalacze uwierzytelnianie
www.mysite.com/admin/asdasdasd/elmah.axd - uruchamia uwierzytelnianie
www.mysite.com/asdasdasd/admin/elmah.axd -zasobu nie można znaleźć. (dokładnie to, czego chcieliśmy)

Author: Justin Svetlik, 2009-08-07

4 answers

Bawiłem się w sieci.config i mam następujące do pracy. Zasadniczo zamiast umieszczać elmah.axd HttpHandler w systemie ogólnym.www, dodaj go specjalnie w systemie.www Twojej lokalizacji ścieżki" admin".

<location path="admin">
    <system.web>
        <httpHandlers>
            <add verb="POST,GET,HEAD" path="elmah.axd"
                 type="Elmah.ErrorLogPageFactory, Elmah" />
        </httpHandlers>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>
 70
Author: Alan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-01 19:08:37

Jeśli używasz ASP.NET MVC, musisz mieć silnik routingu zignorować tę ścieżkę. Jeśli chcesz przenieść elmah do /admin / elmah.na przykład axd należy dodać następujące elementy do Global.asax.cs:

routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");
 25
Author: aarondcoleman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 23:32:34

Po spędzeniu czasu na próbach, aby to zadziałało, łącząc różne porady z każdej odpowiedzi, opracowałem kompletne rozwiązanie, które powinno działać dla wszystkich smaków IIS.

Oto, co musi znaleźć się w każdej Twojej sieci.sekcje config:

<configuration>
  <configSections>
    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
  </configSections>

  <elmah>
    <!-- set allowRemoteAccess="0" for extra security -->
    <security allowRemoteAccess="1"/>
  </elmah>

  <system.web>
    <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>
  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
  </system.webServer>

  <location path="admin">
    <system.web>
      <authorization>
        <!--<allow users="Admin" /> -->
        <deny users="?" />
      </authorization>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
    </system.web>
    <system.webServer>
      <handlers>
        <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
      </handlers>
    </system.webServer>
  </location>

</configuration>

I jeśli używasz Asp.Net MVC, add

routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");

W metodzie RegisterRoutes.

 17
Author: Samuel Jack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-07 16:56:27

W IIS 7.5 windows server 2008 znajduje się kolejna sekcja o nazwie system.webServer. Aby elmah zadziałał, trzeba było to dodać:

<system.webServer>
  <handlers>
   <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
  </handlers>
</system.webServer>

Próbowałem kilku wariacji, ale nie jestem w stanie użyć powyższego rozwiązania do zapobiegania / align = "left" / axd ' z pracy.

Wszelkie sugestie dotyczące działania powyższego rozwiązania dla IIS 7.x?

Dzięki.
 1
Author: InvisibleMan1002,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-12 12:59:08