具有.ASP扩展名的ASP.NET MVC路由

具有.ASP扩展名的ASP.NET MVC路由,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,编辑:“副本”不起作用-不确定确切原因 我需要能够支持如下所示的ASP.NET WebApi(v5.2.3.0)路由: https://example.com/orders/orders.asp routes.MapHttpRoute( name: "Orders", routeTemplate: "api/orders.asp", defaults: new { controller = "OrderConfirm",

编辑:“副本”不起作用-不确定确切原因

我需要能够支持如下所示的ASP.NET WebApi(v5.2.3.0)路由:

https://example.com/orders/orders.asp
routes.MapHttpRoute(
            name: "Orders",
            routeTemplate: "api/orders.asp",
            defaults: new { controller = "OrderConfirm", action = "Get", id = RouteParameter.Optional }
        );
[Route("api/orders.asp")]
第三方设备可以与我的系统交互。我试过这样摆弄RouteConfig:

https://example.com/orders/orders.asp
routes.MapHttpRoute(
            name: "Orders",
            routeTemplate: "api/orders.asp",
            defaults: new { controller = "OrderConfirm", action = "Get", id = RouteParameter.Optional }
        );
[Route("api/orders.asp")]
但我总是得到一个404错误。我把“路线”装饰弄得一团糟,像这样:

https://example.com/orders/orders.asp
routes.MapHttpRoute(
            name: "Orders",
            routeTemplate: "api/orders.asp",
            defaults: new { controller = "OrderConfirm", action = "Get", id = RouteParameter.Optional }
        );
[Route("api/orders.asp")]
控制器代码:

public class OrdersConfirmController : ApiController
{
    [HttpGet]
    public HttpResponseMessage Get()
    {
        string orderContent = "blah, blah, blah";
        var response = Request.CreateResponse(HttpStatusCode.OK, string.Empty);
        response.Content = new StringContent(orderContent, Encoding.UTF8, "text/plain");
        return response;
    }
}
但仍然存在404错误


想法?

在路线表顶部添加新路线

config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
      name: "Orders",
      routeTemplate: "{controller}/{action}.asp"
);
config.Routes.MapHttpRoute(
      name: "DefaultApi",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
);
要添加属性,请执行以下操作:

[RoutePrefix("Orders")]
public class OrdersConfirmController : ApiController
以及采取行动

[Route("orders.asp")]
[HttpGet]
public HttpResponseMessage Get()
另外,要允许URL中的点,您需要将其添加到web.config

<system.webserver>
    <modules runAllManagedModulesForAllRequests="true">


现在您可以通过
http://example.com/Orders/orders.asp

您的测试或来自第三方设备的404错误可能重复?REST客户端模拟设备将发送的请求。路由表中有“api/orders.asp”,但示例中没有“api”那么你想要什么url呢?可能是web.config的更改造成了它的重复!谢谢@Megatron很高兴能帮上忙:)