Elmah.axd on WebAPI 2.2 - No HTTP Resource was found

↘锁芯ラ 提交于 2019-12-05 18:26:05

I finally made it.

By adding to the WebApiConfig.cs file

config.Routes.MapHttpRoute("AXD", "{resource}.axd/{*pathInfo}", null, null, new StopRoutingHandler());

The entire code of the WebApiConfig.cs file looks like this:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            // Locally only you will be able to see the exception errors
            config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.LocalOnly;

            // Web API routes
            config.MapHttpAttributeRoutes();

            var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
            jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            // Remove the XML formatter
            config.Formatters.Remove(config.Formatters.XmlFormatter);

            config.Routes.MapHttpRoute("AXD", "{resource}.axd/{*pathInfo}", null, null, new StopRoutingHandler());

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }


    }

And the final change is add this to the global.asax under application_start method

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");

Special thanks all who helped me with this issue.

When I added the following in in the global.asax under the application_start method:

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");

It did not work until I put it above ...

GlobalConfiguration.Configure(WebApiConfig.Register);

The order of the routes that you add to the Routes property is significant, because the application uses the first route in the collection that matches the URL.

https://msdn.microsoft.com/en-us/library/system.web.routing.routetable.routes(v=vs.110).aspx

The most likely problem is missing handlers to generate the error page.

Ensure the following handlers are configured your web.config file:

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


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

With those settings in place you should be able to access elmah.axd and secure it as expected.

You can grab a sample config file that was updated from a fresh project as an example here: https://brutaldev.com/download/30987439.zip

For me adding

config.Routes.IgnoreRoute("axd", "{resource}.axd/{*pathInfo}");

to WebApiConfig was enough.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!