5

Khi tôi gỡ lỗi/chạy, sử dụng IIS Express và duyệt đến http://localhost:1234/People, IIS Express cố gắng duyệt thư mục People thay vì thực hiện tuyến đường People và tôi nhận được một lỗi HTTP 403.14. Vì vậy, tôi vô hiệu hóa trình xử lý StaticFile trong Web.config và làm mới. Bây giờ tôi nhận được một lỗi 404,4 HTTP:ASP.NET MVC5 từ chối ánh xạ tuyến đường khớp với đường dẫn vật lý

404

Tôi biết rằng con đường làm việc vì nếu tôi đổi tên RoutePrefix, ví dụ PeopleTest, sau đó tuyến đường được thực hiện và tôi nhận được phản hồi mà tôi mong đợi.

Làm cách nào để thuyết phục IIS/Express thích tuyến đường MVC hơn tệp/thư mục tĩnh?

Tôi đang sử dụng định tuyến thuộc tính; mã có liên quan là dưới đây:

Web.config

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 

    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <remove name="StaticFile"/> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
</system.webServer> 

Global.asax

GlobalConfiguration.Configure(WebApiConfig.Register); 
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
BundleConfig.RegisterBundles(BundleTable.Bundles); 
AutofacConfig.Configure(); 

Startup \ WebApiConfig

namespace MyApi.Startup { 
    public static class WebApiConfig { 
     public static void Register(HttpConfiguration config) { 
      config.MapHttpAttributeRoutes(); 
     } 
    } 
} 

dân \ PeopleController

namespace MyApi.People { 
    [RoutePrefix("People")] 
    public partial class PagesController : BaseController { 
     [Route] 
     [HttpGet] 
     [ResponseType(typeof(IEnumerable<Person>))] 
     public IHttpActionResult Get() { ... } 
    } 
} 

Lưu ý rằng kể từ khi tôi đang sử dụng định tuyến thuộc tính, tôi đang sử dụng một cấu trúc thư mục không chuẩn. Ví dụ. Tôi không có thư mục Bộ điều khiển/Mô hình/Lượt xem, thay vào đó tôi có thư mục gốc cho từng khu vực kinh doanh (ví dụ: ~\People chứa bộ điều khiển/mô hình/v.v ... cho khu vực kinh doanh "Mọi người").

Những gì tôi đã cố gắng

  1. Thiết RAMMFAR.
  2. Xóa và thêm lại ExtensionlessUrlHandler-Integrated-4.0.
+0

Tôi nghĩ rằng bạn đang cố gắng sử dụng này "Mọi người Cấu trúc" như một [ Area] (http://www.c-sharpcorner.com/UploadFile/4b0136/getting-started-with-area-in-mvc-5/). Tôi sợ cấu trúc này mà bạn đề xuất sẽ không hoạt động. –

+0

Tôi không sử dụng các khu vực hoặc định tuyến MVC tiêu chuẩn, tôi đang sử dụng Định tuyến Thuộc tính: http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net -mvc-5.aspx –

Trả lời

Các vấn đề liên quan