Elmah가 asp.net 사이트에서 작동하지 않습니다.
asp.net 사이트에서 elmah를 사용하려고 했지만 http://localhost:port/elmah.axd로 이동할 때마다 resource not found 예외가 발생합니다.나의 web.config는 아래와 같습니다.
<?xml version="1.0"?>
<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>
<security allowRemoteAccess="0" />
<errorLog type="Elmah.SqlErrorLog, Elmah"
connectionStringName="elmah-sql" />
<errorMail
from="my@account"
to="myself"
subject="ERROR From Elmah:"
async="true"
smtpPort="587"
smtpServer="smtp.gmail.com"
userName="my@account"
password="mypassword" />
</elmah>
<connectionStrings>
<add name="elmah-sql" connectionString="data source=(sqlserver);
database=elmahdb;
integrated security=false;User ID=user;Password=password"/>
</connectionStrings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="Elmah, Version=1.0.10617.0, Culture=neutral,
PublicKeyToken=null"/>
</assemblies>
</compilation>
<authentication mode="Windows"/>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<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="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, 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"
preCondition="integratedMode"
type="Elmah.ErrorLogPageFactory, Elmah"/>
</handlers>
</system.webServer>
</configuration>
편집: Elmah =(오류 로깅 모듈 및 핸들러)
http://code.google.com/p/elmah/
방금 IIS7 배포 환경에서 Elmah가 작동하지 않는 것과 비슷한 문제가 있었습니다.Elmah 모듈 및 핸들러를 에 등록해야 한다는 것을 알게 되었습니다.system.web
그리고.system.webServer
:
<system.web>
...
<httpHandlers>
...
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
...
</httpHandlers>
<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"/>
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
...
</modules>
<handlers>
...
<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
...
</handlers>
<system.webServer>
당신도 이것이 필요할 수 있습니다.
<elmah>
<security allowRemoteAccess="1" />
</elmah>
을 얻으면
403 - 금지됨:액세스가 거부되었습니다.제공한 자격 증명을 사용하여 이 디렉터리 또는 페이지를 볼 수 있는 권한이 없습니다.
의 "httpandler" 및 "httpmodules" 섹션에서 모듈 및 핸들러를 등록해 보십시오.<system.web>
섹션:
<httpHandlers>
......
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
.....
</httpHandlers>
<httpModules>
.......
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
.......
</httpModules>
오늘날 그것을 피하는 한 가지 방법은 너겟을 사용하는 것입니다.
Visual Studio: 메뉴->도구->라이브러리 패키지 관리자->패키지 관리자 콘솔
install-package elmah
HTH
NuGet(VS 2013, IIS 8.0)을 사용하여 설치할 때 이 줄이 누락되었습니다.
<system.webServer>
<handlers>
<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</handlers>
</system.webServer>
그것을 추가하면 404 오류 문제가 해결되었습니다.
nuget 패키지가 web.config에 다음 중요 행을 추가하지 않아 403 오류가 발생합니다.
<configuration>
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/app_data/elmah" />
</elmah>
</configuration>
또한 다음과 같이 오류 로그에 대한 액세스를 제한할 수 있습니다.
<add name="Elmah" verb="POST,GET,HEAD" path="/admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
영역을 사용하는 경우 앱 설정 키 중 하나를 업데이트했는지 확인합니다.
체납
<add key="elmah.mvc.route" value="elmah" />
관리자 영역인 경우
<add key="elmah.mvc.route" value="admin/elmah" />
언급URL : https://stackoverflow.com/questions/933554/elmah-not-working-with-asp-net-site
'programing' 카테고리의 다른 글
Oracle과 같이 mysql의 날짜 필드 잘라내기 (0) | 2023.06.23 |
---|---|
오프라인 Swagger API 문서를 생성하는 방법은 무엇입니까? (0) | 2023.06.23 |
Kotlin @ConfigurationProperties 클래스에 대한 IntelliJ Idea에서 spring-configuration-metadata.json 파일이 생성되지 않습니다. (0) | 2023.06.23 |
도커 컨테이너에서 mongoimport를 실행합니다. (0) | 2023.06.23 |
Spring Web Client에서 프록시 설정이 작동하지 않음 (0) | 2023.06.23 |