Receiving 404 Error When Trying To View elmah.axd File In IIS 7.0

1,777 views
Skip to first unread message

jonathangill

unread,
Aug 25, 2008, 12:50:57 PM8/25/08
to ELMAH
I am receiving a 404 Error when trying to access the elmah.axd file on
the server. Is there something I need to do to allow the file to
appear. I am using Discount ASP as my web host and my account is also
running IIS 7.0.

The log should appear at domain.com/elmah.axd.

James_2JS

unread,
Aug 25, 2008, 6:02:14 PM8/25/08
to ELMAH

jonathan{GILL}

unread,
Aug 25, 2008, 7:58:06 PM8/25/08
to el...@googlegroups.com
James,
Yes, these have been utilized but I am still receiving a 404 error.  It may be because my host has not mapped .axd files.

 

James_2JS

unread,
Aug 26, 2008, 3:25:03 AM8/26/08
to ELMAH
Hi Jonathan,

I don't think it's because the .axd files haven't been mapped... if
that was the case you would have issues with WebResource.axd, which is
pretty fundamental to the .NET Framework! However, you should be able
to test this by changing elmah.axd for elmah.aspx in the handler
mapping. If you get no joy with this, could you post your web.config
here so we can see what's going on please?!

Thanks,

James

jonathan{GILL}

unread,
Aug 26, 2008, 8:38:18 PM8/26/08
to el...@googlegroups.com
James,
Thanks.  It doesn't look like that worked either.  Here is the current mix and match web.config, that may have the details needed.
 

<?xml version="1.0"?>
<configuration>
 <configSections>
  <!-- .NET 3.5
  <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
   <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
     <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
     <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
     <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
     <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
   </sectionGroup>
  </sectionGroup>
  -->
  <!-- .NET 2.0 -->
  <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
   <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
     <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
     <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
     <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
    </sectionGroup>
   </sectionGroup>
  </sectionGroup>
  
  <sectionGroup name="elmah">
   <!-- NOTE! If you are using ASP.NET 1.x then remove the
                 requirePermission="false" attribute from the section
                 elements below as those are only needed for
                 partially trusted applications in ASP.NET 2.0 -->
   <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>
  <section name="NotTheRealDBName.Data" type="NotTheRealDBName.Data.Bases.NetTiersServiceSection, NotTheRealDBName.Data" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
  <section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
 </configSections>
 <connectionStrings>
  <add name="NotTheRealDBName.Data.ConnectionString" connectionString="Data Source=sql2k503.whatwhat.net;Initial Catalog=SQL2005_537304_NotTheRealDBNamedev;Persist Security Info=True;User ID=SQL2005_537304_NotTheRealDBNamedev_user;Password=phones"/>
  <add name="connNotTheRealDBName_PRD" connectionString="Data Source=sql2k503.whatwhat.net;Initial Catalog=SQL2005_537304_NotTheRealDBNamedev;Persist Security Info=True;User ID=SQL2005_537304_NotTheRealDBNamedev_user;Password=phones" providerName="System.Data.SqlClient"/>
  <remove name="LocalSqlServer"/>
  <add name="LocalSqlServer" connectionString="Data Source=sql2k503.whatwhat.net;Initial Catalog=SQL2005_537304_NotTheRealDBNamedev;Persist Security Info=True;User ID=SQL2005_537304_NotTheRealDBNamedev_user;Password=phones" providerName="System.Data.SqlClient"/>
  <add name="Elmah.Sql" connectionString="Data Source=sql2k503.whatwhat.net;Initial Catalog=SQL2005_537304_NotTheRealDBNamedev;Persist Security Info=True;User ID=SQL2005_537304_NotTheRealDBNamedev_user;Password=phones" providerName="System.Data.SqlClient"/>
 </connectionStrings>
 <NotTheRealDBName.Data defaultProvider="SqlNetTiersProvider">
  <providers>
   <!--
    *** SqlClient Provider ***
     connectionStringName: sqlclient connection string to the db
     useStoredProcedure: if true, indicates that we use the stored procedures, otherwise, we use parametrized queries that are embedded.
   -->
   <add name="SqlNetTiersProvider" type="NotTheRealDBName.Data.SqlClient.SqlNetTiersProvider, NotTheRealDBName.Data.SqlClient" connectionStringName="NotTheRealDBName.Data.ConnectionString" providerInvariantName="System.Data.SqlClient" entityFactoryType="NotTheRealDBName.Entities.EntityFactory" useEntityFactory="true" enableEntityTracking="true" enableMethodAuthorization="false" useStoredProcedure="false" defaultCommandTimeout="60"/>
   <!--
    *** WebserviceClient Provider ***
    The url parameter indicates the webservices url (ex: http://localhost/NotTheRealDBName/NotTheRealDBNameServices.aspx)
    <add
     name="WsNetTiersProvider"
     type="NotTheRealDBName.Data.WebServiceClient.WsNetTiersProvider, NotTheRealDBName.Data.WebServiceClient"
     url="/NotTheRealDBNameServices.asmx" />
   -->
  </providers>
 </NotTheRealDBName.Data>
 <appSettings>
  <add key="SiteStatus" value="On"/>
  <add key="UserThreshold" value="1000"/>
  <add key="CSSFriendly-JavaScript-Path" value="~/JavaScript"/>
 </appSettings>
 <elmah>
  <security allowRemoteAccess="1"/>
  <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Elmah.Sql"/>
  <!--
            Use to log errors to Microsoft SQL Server 2000 or 2005
            using ASP.NET 2.0. Set value of connectionStringName attribute
            to the name of the connection string settings to use from
            the <connectionStrings> section.
       
        <errorLog type="Elmah.SqlErrorLog, Elmah"
            connectionStringName="..." />
        -->
  <!--
            Use to log errors into separate XML files that are stored on
            disk at the path specified in the logPath attribute.

        <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="..." />
        -->
  <!--
            Use to send error reports by e-mail and adjust the attributes
            according to settings desired. Note that only the from and
            to attributes are required. The rest are optional and may
            be removed. If the SMTP server does not require authentication,
            you MUST remove the userName and password attributes or
            set them to empty values (resulting in zero-length strings).
            If you are using ELMAH compiled for .NET Framework 1.x, then
            the to attribute may contain multiple recipient addresses,
            each of which must be delimited by a semi-colon(;). If you are
            using ELMAH compiled for .NET Framework 2.0 or later, then the
            to attribute may contain multiple recipient addresses,
            each of which must be delimited by a comma (,).

        <errorMail
            from="el...@example.com"
            to="ad...@example.com"
            subject="..."
            async="true|false"
            smtpPort="25"
            smtpServer="smtp.example.com"
            userName="johndoe"
            password="secret" />
        -->
  <!--
            Use to prevent errors from being mailed or logged based on
            assertions/conditions provided under the <test> element.
            The example below will filter errors of type HttpException
            where the status code is 404 (in other words, where the
            resource was not found).

        <errorFilter>
            <test>
                <equal binding="HttpStatusCode" value="404" valueType="Int32" />
            </test>
        </errorFilter>
        -->
  <!-- Don't log 404 -->
  <errorFilter>
   <test>
    <equal binding="HttpStatusCode" value="404" valueType="Int32"/>
   </test>
  </errorFilter>
 </elmah>
 <system.web>
  <pages validateRequest="false" enableEventValidation="false">
   <controls>
    <!-- .NET 2.0 -->
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <!-- .NET 3.5
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    -->
    <add tagPrefix="data" namespace="NotTheRealDBName.Web.Data" assembly="NotTheRealDBName.Web"/>
    <add tagPrefix="data" namespace="NotTheRealDBName.Web.UI" assembly="NotTheRealDBName.Web"/>
   </controls>
  </pages>
  <!--
          Set compilation debug="true" to insert debugging
          symbols into the compiled page. Because this
          affects performance, set this value to true only
          during development.
    -->
  <compilation debug="true">
   <assemblies>
    <!-- .NET 2.0 -->
   <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

   <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <!-- .NET 3.5
    
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    -->
   </assemblies>
  </compilation>
  <!--  CUSTOM ERROR MESSAGES
          Set customErrors mode="On" or "RemoteOnly" to enable custom error messages, "Off" to disable.
          Add <error> tags for each of the errors you want to handle.

          "On" Always display custom (friendly) messages.
          "Off" Always display detailed ASP.NET error information.
          "RemoteOnly" Display custom (friendly) messages only to users not running
           on the local Web server. This setting is recommended for security purposes, so
           that you do not display application detail information to remote clients.    -->
  <!--
          Custom Friendly Error Pages.  Set to RemoteOnly so we see hard errors when debugging.
  -->
  <!-- <customErrors mode="RemoteOnly" defaultRedirect="~/errors/Error.aspx">
   <error statusCode="404" redirect="~/errors/PageNotFound.aspx"/>
  </customErrors> -->
  <customErrors mode="Off"/>
  <httpHandlers>
   <!-- .NET 2.0 -->
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

  <!-- .NET 3.5
   <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"/>
   -->
   <!--
                This entry provides the UI for the error log at
                elmah.axd below the application path. For example,
                if your domain is www.example.com and your application
                is at the root, then you can view the error log by
                visiting the following URL:
               
                http://www.example.com/elmah.axd
               
                IMPORTANT! To secure this location, consult the
                following notes:
               
                http://code.google.com/p/elmah/wiki/SecuringErrorLogPages
            -->
  <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
  <!--
   <add verb="POST,GET,HEAD" path="elmah.aspx" type="Elmah.ErrorLogPageFactory, Elmah"/>
  -->
  </httpHandlers>
  <httpModules>
   <!-- .NET 2.0 -->
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

   
   <!-- .NET 3.5
   <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   -->
   <add name="EntityTransactionModule" type="NotTheRealDBName.Web.Data.EntityTransactionModule"/>
   <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
   <!--
                Uncomment the entries below if error mail reporting
                and filtering is desired.
            -->
   <!--<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />-->
   <!--<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>-->
  </httpModules>
  <!--  AUTHENTICATION
          This section sets the authentication policies of the application. Possible modes are "Windows",
          "Forms", "Passport" and "None"

          "None" No authentication is performed.
          "Windows" IIS performs authentication (Basic, Digest, or Integrated Windows) according to
           its settings for the application. Anonymous access must be disabled in IIS.
          "Forms" You provide a custom form (Web page) for users to enter their credentials, and then
           you authenticate them in your application. A user credential token is stored in a cookie.
          "Passport" Authentication is performed via a centralized authentication service provided
           by Microsoft that offers a single logon and core profile services for member sites.    -->
  <!--
          Forms authentication and Session timeouts are set to the same value, e.g. 120 minutes. 
    Setting the timeout="525600" would mean the cookie/session would expire in 1 year.
  -->
  <authentication mode="Forms">
   <forms name=".NotTheRealDBName" loginUrl="Login.aspx" protection="All" timeout="120" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="Login.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
  </authentication>
  <sessionState timeout="120"/>
  <membership userIsOnlineTimeWindow="120">
   <providers>
    <add name="AspNetSqlProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="connNotTheRealDBName_PRD" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="NotTheRealDBName" requiresUniqueEmail="true" passwordFormat="Encrypted" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1"/>
    <!-- HASHED -->
    <!-- <add name="AspNetSqlProvider"
     type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
     connectionStringName="connNotTheRealDBName_PRD"
     enablePasswordRetrieval="false"
     enablePasswordReset="true"
     requiresQuestionAndAnswer="true"
     applicationName="NotTheRealDBName"
     requiresUniqueEmail="true"
     passwordFormat="Hashed"
     minRequiredPasswordLength="6"
     minRequiredNonalphanumericCharacters="1"
     />
    -->
   </providers>
  </membership>
  <roleManager defaultProvider="AspNetSqlProvider" enabled="true">
   <providers>
    <!--
      Add the application name so that users can be looked up correctly and to prevent duplicate user entries
    -->
    <add name="AspNetSqlProvider" connectionStringName="connNotTheRealDBName_PRD" applicationName="NotTheRealDBName" type="System.Web.Security.SqlRoleProvider"/>
   </providers>
  </roleManager>
  <!--
      Declare profile fields
    -->
  <profile defaultProvider="AspNetSqlProvider" enabled="true">
   <providers>
    <!--
      Add the application name so that users can be looked up correctly and to prevent duplicate user entries
    -->
    <add name="AspNetSqlProvider" connectionStringName="connNotTheRealDBName_PRD" applicationName="NotTheRealDBName" type="System.Web.Profile.SqlProfileProvider"/>
   </providers>
   <!--
   <properties>
    <add name="Gender" type="string"/>
    <add name="Country" type="string"/>
    <add name="Postalcode" type="string"/>
    <add name="Birthdate" type="datetime"/>
    <add name="TermsandConditions" type="System.Boolean"/>
    <add name="CurrentWITR" type="string"/>
   </properties>
   -->
  </profile>
  <!--  GLOBALIZATION This section sets the globalization settings of the application. -->
  <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="auto" uiCulture="auto"/>
  <!--  AUTHORIZATION
          This section sets the authorization policies of the application. You can allow or deny access
          to application resources by user or role. Wildcards: "*" mean everyone, "?" means anonymous
          (unauthenticated) users.  -->
  <authorization>
   <allow users="*"/>
   <!-- Allow all users -->
   <!--  <allow     users="[comma separated list of users]"
                             roles="[comma separated list of roles]"/>
                  <deny      users="[comma separated list of users]"
                             roles="[comma separated list of roles]"/> -->
  </authorization>
  <!--  APPLICATION-LEVEL TRACE LOGGING
          Application-level tracing enables trace log output for every page within an application.
          Set trace enabled="true" to enable application trace logging.  If pageOutput="true", the
          trace information will be displayed at the bottom of each page.  Otherwise, you can view the
          application trace log by browsing the "trace.axd" page from your web application
          root. -->
  <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>
  <!--  MACHINE KEY FOR ENCRYPTION -->
  <!-- DO NOT USE IN MULTPLE SERVER FARM/ENVIRONMENT - <machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="SHA1"/> -->
  <machineKey validationKey="30CC1E773F7D12E53A3C9F2346D682C33593DE77788CB7CF0154A9885D9F63A59219D5507D1C5C6AEAAA3EDC1D632C5EA86F2BB5BA476652F60F74A4394E2182" decryptionKey="1CC156C7B41308C8B09AF7FB8C08E7B548C722A3131547CAAB3189A268680B7D" validation="SHA1" decryption="AES"/>
  <xhtmlConformance mode="Legacy"/>
 </system.web>
 <!-- .NET 3.5
 <system.codedom>
  <compilers>
   <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="WarnAsError" value="false"/>
   </compiler>
   <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <providerOption name="CompilerVersion" value="v3.5"/>
    <providerOption name="OptionInfer" value="true"/>
    <providerOption name="WarnAsError" value="false"/>
   </compiler>
  </compilers>
 </system.codedom>
 -->
 <enterpriseLibrary.ConfigurationSource selectedSource="File Configuration Source">
  <sources>
   <add name="File Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" filePath="entlib.config"/>
  </sources>
 </enterpriseLibrary.ConfigurationSource>
 <!--
      Overall Mail Settings
    -->
 <system.net>
  <mailSettings>
   <smtp from="no-r...@whatwhatyupyep.info">
    <network host="smtp.whatwhatyupyep.info" port="25" userName="no-r...@whatwhatyupyep.info" password="crazy!fet43tegfet3t3ef1"/>
   </smtp>
  </mailSettings>
 </system.net>
 <system.web.extensions>
  <scripting>
   <webServices>
    <!-- Uncomment this line to customize maxJsonLength and add a custom converter -->
    <!--
      <jsonSerialization maxJsonLength="500">
        <converters>
          <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
        </converters>
      </jsonSerialization>
      -->
    <!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->
    <!--
        <authenticationService enabled="true" requireSSL = "true|false"/>
      -->
    <!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved
           and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and
           writeAccessProperties attributes. -->
    <!--
      <profileService enabled="true"
                      readAccessProperties="propertyname1,propertyname2"
                      writeAccessProperties="propertyname1,propertyname2" />
      -->
   </webServices>
   <!--
      <scriptResourceHandler enableCompression="true" enableCaching="true" />
      -->
  </scripting>
 </system.web.extensions>
 <!-- .NET 3.5
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
   
 <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"/>
  </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"/>
  </handlers>
 </system.webServer>
 <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
   </dependentAssembly>
   <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
   </dependentAssembly>
  </assemblyBinding>
 </runtime>-->
 <!-- .NET 2.0 -->
 <system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
   <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 
        <add name="Elmah.ErrorLog" type="Elmah.ErrorLogModule, Elmah"
preCondition="managedHandler" />
        <!--<add name="Elmah.ErrorFilter"
type="Elmah.ErrorFilterModule" preCondition="managedHandler" />-->
        <!--<add name="Elmah.ErrorMail" type="Elmah.ErrorMailModule"
preCondition="managedHandler" />-->

  </modules>
  <handlers>
   <remove name="WebServiceHandlerFactory-Integrated"/>
   <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.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=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </handlers>
 </system.webServer>
</configuration>



 

James_2JS

unread,
Aug 27, 2008, 3:37:44 AM8/27/08
to ELMAH
Hi Jonathan,

Looks like you've made a simple omission in the <system.webServer>
(aka IIS7) part of web.config:

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

You have put the right bits into the <modules> section, but you
haven't put the handler in there... hence the 404 errors!!

Give that a whirl and let us know how you get on!

Cheers,

James
Reply all
Reply to author
Forward
0 new messages