Tôi đã cố gắng thiết lập ứng dụng Beta 1 MVC trên IIS 6 và không thể chạy nó đúng cách. Tôi đã thêm một ánh xạ ký tự đại diện cho DLL .net ISAPI như đề xuất trong bài đăng trên blog khác, nhưng nhận được lỗi sau khi tôi truy cập vào thư mục gốc của website:ASP.NET MVC trên IIS 6 - ánh xạ ký tự đại diện - yêu cầu đến không khớp với bất kỳ tuyến đường nào
The incoming request does not match any route.
..
[HttpException (0x80004005): The incoming request does not match any route.]
System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext) +147
System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContext httpContext) +36
System.Web.Routing.UrlRoutingHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +4
HCD.Intranet.Web.Default.Page_Load(Object sender, EventArgs e) +81
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436
Tôi đang sử dụng trang Default.aspx cung cấp trong Ứng dụng mẫu MVC ghi lại quyền truy cập vào thư mục gốc của trang web đúng cách.
public partial class Default : Page
{
public void Page_Load(object sender, System.EventArgs e)
{
HttpContext.Current.RewritePath(Request.ApplicationPath);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
}
}
Nếu tôi cố gắng và truy cập vào một con đường bên trong ứng dụng, chẳng hạn như/dự án, tôi nhận tiêu chuẩn IIS 404 trang lỗi, không phải là trang báo lỗi .net.
Tôi đã thử thêm dòng sau vào phần httpHandlers Web.config của tôi:
<add verb="*" path="*" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
này đã cho tôi một lỗi khác nhau - các trang lỗi .net 404.
tôi đã thêm dòng sau vào Global.asax của tôi, mà đã không làm gì:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Context.Request.FilePath.Equals("/"))
Context.RewritePath("Default.aspx");
}
Tôi đang sử dụng cấu hình tuyến đường sau (sử dụng định tuyến yên tĩnh được cung cấp bởi các dự án MvcContrib):
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
SimplyRestfulRouteHandler.BuildRoutes(routes);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
Bất kỳ đề xuất nào sẽ được nhận một cách grealy vì tôi đã hết tất cả các lựa chọn cho thời gian tôi có ngay bây giờ.
Rất cám ơn.
Hoàn hảo - đây là vấn đề của tôi. Tôi đã xây dựng qua NAnt/MSBuild và không bao gồm tệp Global.asax. Có tập tin đó giải quyết mọi thứ. –
Hmm, tôi có cùng một vấn đề, và tôi cũng đang sử dụng các kịch bản xây dựng để đóng gói các tệp, nhưng tệp Global.asax của tôi chắc chắn có trong thư mục web root. –