WebAPI 2.2 上的 Elmah.axd - 未找到 HTTP 资源

2024-05-04

我试图在我的浏览器中访问 /elmah.axd,但它返回:

{"message":"No HTTP resource was found that matches the request URI 'http://services.domain.com/elmah.axd'."}

服务器是本地的(127.0.0.1),甚至我有我的 web.config Elmah 设置来以这种方式保护它:

<elmah>
    <security allowRemoteAccess="true" />
</elmah>

我的 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.Routes.IgnoreRoute("elmah", "elmah.axd");
            config.Routes.IgnoreRoute("allemah", "elmah.axd/{*pathInfo}");
            config.Routes.IgnoreRoute("elmahgeneric", "{resource}.axd/{*everything}");
            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(
                name: "DefaultApi",
                routeTemplate: "{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

当时我什至尝试只忽略这 3 种组合中的任何一种路线,但没有成功。

最后我的 global.asax 看起来像这样:

protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);

        }

任何关于我可能会错过什么的提示或想法都会很好。

预先致谢,非常感谢您花时间调查此事。


我终于成功了。

通过添加到WebApiConfig.cs文件

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

WebApiConfig.cs 文件的整个代码如下所示:

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 }
            );
        }


    }

最后的更改是将其添加到 application_start 方法下的 global.asax 中

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

特别感谢所有帮助我解决这个问题的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebAPI 2.2 上的 Elmah.axd - 未找到 HTTP 资源 的相关文章

随机推荐