Я пытался настроить приложение Beta 1 MVC на IIS 6 и не могу запустить его правильно. Я добавил сопоставление с подстановочными знаками в .net isapi DLL, как предлагается в других сообщениях в блоге, но при доступе к корню веб-сайта получаю следующую ошибку:
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
Я использую страницу Default.aspx, предоставленную в шаблонном приложении MVC, которая корректно перезаписывает доступ к корню веб-сайта.
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);
}
}
Если я пытаюсь получить доступ к маршруту в приложении, например / Project, я получаю стандартную страницу ошибок IIS 404, а не страницу ошибок .net.
Я попытался добавить следующую строку в мой раздел http.Handlers Web.config:
<add verb="*" path="*" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Это дало мне другую ошибку - страницу ошибки .net 404.
Я добавил следующее в свой Global.asax, который ничего не сделал:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Context.Request.FilePath.Equals("/"))
Context.RewritePath("Default.aspx");
}
Я использую следующую конфигурацию маршрута (использует маршрутизацию restful, предоставленную проектом MvcContrib):
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
SimplyRestfulRouteHandler.BuildRoutes(routes);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
Любые предложения будут приниматься всерьез, поскольку я исчерпал все варианты, которые у меня есть на данный момент.
Большое спасибо.