簡體   English   中英

帶有 .asp 擴展名的 ASP.NET MVC 路由

[英]ASP.NET MVC route with .asp extension

編輯:“重復”不起作用 - 不知道為什么。

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

https://example.com/orders/orders.asp

這是讓第 3 方設備能夠與我的系統進行交互。 我試過像這樣弄亂 RouteConfig:

routes.MapHttpRoute(
            name: "Orders",
            routeTemplate: "api/orders.asp",
            defaults: new { controller = "OrderConfirm", action = "Get", id = RouteParameter.Optional }
        );

但我總是收到 404 錯誤。 我弄亂了“路線”裝飾,如下所示:

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

OrdersConfirmController添加屬性:

[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訪問資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM