#asp.net #asp.net-mvc #routing #webforms
#asp.net #asp.net-mvc #маршруты #веб-формы
Вопрос:
Привет, я пытаюсь использовать Asp.net Маршрутизация в Webforms. (Следует отметить, что я использую .net 3.5) . Я выяснил способ использования маршрута из нескольких статей.Но первоначальный запрос по-прежнему отправляется в Default.aspx. Но вместо этого я хочу, чтобы запрос отправлялся в Routehandler, где я могу динамически перенаправлять на нужную страницу
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="RoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"></modules>
<modules>
<remove name="ScriptModule"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory"/>
<remove name="ScriptHandlerFactoryAppServices"/>
<remove name="ScriptResource"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</handlers>
</system.webServer>
Пожалуйста, найдите раздел конфигурации для справки
Комментарии:
1. зарегистрирован ли ваш обработчик? Мне не кажется, что это так?
2. @jonezy Должен ли я зарегистрировать свой HTTP-обработчик, который я написал для модуля маршрутизации.. Не могли бы вы, пожалуйста, показать мне пример
3. да, ты уверен, что делаешь!! я опубликую, как я регистрирую свой ниже
4. @jonezy я жду твоего ответа… еще одна вещь, как я могу избежать перехода к default.aspx…
Ответ №1:
Похоже, вы не добавили обработчик в раздел вашего web.config.
Не могли бы вы опубликовать какой-нибудь код или ссылки на статьи, из которых вы взяли код?
Я внедрил маршрутизацию с помощью веб-форм совсем недавно, и у меня было несколько похожих проблем (которые в значительной степени были связаны с конфигурацией)
Комментарии:
1. Я добавил раздел конфигурации
Ответ №2:
Наконец-то я могу разобраться.Если вы хотите, чтобы маршрут проходил по обычной ссылке, вы должны преобразовать свой маршрут в string.empty
Route route=new Route(string.Empty,new RouteHandler());
routeCollection.Add("default",route);