7

Tôi đang sử dụng .net4.5rc với MVC4.0rcasp.net MVC không nhận được yêu cầu GET với một giai đoạn trong đó

Đoạn code dưới đây được lấy từ một ứng dụng WebAPI MVC nhưng tôi hành vi tương tự là có cho MVC asp.net reular

đang RegisterRoutes của tôi trông như thế này

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapHttpRoute(
       name: "R1", 
       routeTemplate: "product/{id}", 
       defaults: new { 
           controller="Product", 
           id = RouteParameter.Optional 

           } 
      ); 

này hoạt động tốt với Id mà không có một khoảng thời gian trong đó. Tuy nhiên, khi tôi yêu cầu một sản phẩm có khoảng thời gian trong đó, cuộc gọi dường như không đến được ASP.NET

khi tôi sử dụng cài đặt bên dưới như được đề xuất trên các bài đăng tương tự mà nó hoạt động khi có dấu/ Nhưng không hoạt động mà không có nó

trong tóm tắt

http://mysite.com/product/AZ0  //works 
http://mysite.com/product/AZ.0/ //work with relaxedUrlToFileSystemMapping 
http://mysite.com/product/AZ.0 //does not work 

Câu trả lời là 404 và tôi đoán này được trả về bởi IIS mà không liên quan đến ASP.NET. Khi tôi chạy trình cắm định tuyến với một URL như URL cuối cùng ở trên, tôi thậm chí không nhận được các công cụ định tuyến số

Làm cách nào để làm cho IIS chuyển điều khiển đến ASP.NET khi có URL có mẫu: mysite.com/product/{id} bất kể có thời gian trong id hay không.

cảm ơn.

Trả lời

7

Hãy để tôi tự trả lời câu hỏi này. Thêm một URL Rewrite giải quyết vấn đề. Mã dưới đây được thêm vào web.config sẽ ghi đè url bằng dấu "/" nếu URL có dạng (sản phẩm/.) Sau đó, nó không còn được xử lý dưới dạng tệp nhưng được xử lý như MVC thông thường.

<system.webServer> 
    .... 
    <rewrite> 
     <rules> 
     <rule name="Add trailing slash" stopProcessing="true"> 
      <match url="(product/.*\..*[^/])$" /> 
      <action type="Rewrite" url="{R:1}/" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
Các vấn đề liên quan