system.web.routing на веб-сервере не работает - PullRequest
3 голосов
/ 23 мая 2009

Я прочитал все эти статьи о том, как заставить system.web.routing работать, но все эти статьи объясняют на localhost: port. Я могу заставить это работать на локальной машине, но как только я загружаю сайт на сервер, маршрутизация перестает работать независимо от того, что я делаю.

Сначала я пытался без какого-либо расширения (.aspx), но после всех усилий я отказался и добавил расширение, но оно все равно не работает на сервере.

Любая помощь приветствуется.

образец:

в global.ascx

Route test = new Route("home.aspx", new TestRoutingHandler());
Routes.Add(test); 

в обработчике маршрутизации

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
    string virtualPath = string.Empty;
    Route route = (Route)requestContext.RouteData.Route;
    virtualPath = "~/Default.aspx";
    return (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
}

В web.config под httpModules

add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 

Это так просто и работает на локальном компьютере, но не на веб-сервере.

Ответы [ 2 ]

2 голосов
/ 11 декабря 2010

Для IIS7 + я обнаружил, что добавление в раздел web.config неожиданно заставило все работать:

<modules runAllManagedModulesForAllRequests="true" />

Сбивает с толку, как в VS, работающем на веб-сервере Cassini, он работал просто отлично.

0 голосов
/ 23 мая 2009

Убедитесь, что веб-сервер настроен на обработку всех запросов с помощью ASP.NET (также называемого обработчиком подстановочных знаков). В противном случае он будет обслуживать запросы через ASP.NET только в том случае, если точный запрошенный путь соответствует физическому файлу на диске и имеет расширение .aspx. Очевидно, что концепция маршрутизации полностью не соответствует первому условию и обычно второму.

У Фила Хаака есть большое прохождение о том, как это сделать в IIS 6 .

Для IIS 7 вам просто нужно иметь правильные модули и обработчики , указанные в system.webServer в web.config.

...