Asp.net С маршрутизацией в 3.5

#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);