Маршрутизация на веб-сайте ASP.NET (не в приложении WebForm и не в MVC) - PullRequest
2 голосов
/ 05 октября 2011

Могу ли я использовать web.config или Global.asax для маршрутизации на веб-сайте asp.net (структура папок)?

В основном я хотел бы

http://www.something.com/agents/10/TheAgentsName

для перехода на

http://www.something.com/portfolio.aspx?caid=10

Имя агента в URL просто для "украшения".

Я нашел несколько примеров, но все они относятся к MVCили приложения WebForms.

При попытке реализовать Global.asax постоянно повторяется, что System.Web.Routing не существует в пространстве имен.Вот так выглядит мой Global.asax (он не запускается)!

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        RegisterRoutes(System.Web.Routing.RouteTable.Routes);

    }

    void RegisterRoutes(System.Web.Routing.RouteCollection routes)
    {
        routes.MapPageRoute("AgentPortfolioByName", "agents/{id}/{name}", "portfolio.aspx");
    }

    void Application_End(object sender, EventArgs e) 
    {
    }

    void Application_Error(object sender, EventArgs e) 
    { 
    }

    void Session_Start(object sender, EventArgs e) 
    {
    }

    void Session_End(object sender, EventArgs e) 
    {
    }

</script>

Global.asax Application_Start выполняется нормально (я пытался установить точку останова).Но он просто не понимает, что такое System.Web.Routing.В web.config у меня есть следующие записи:

<compilation debug="true">
            <assemblies>
                <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
        </compilation>

......

<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>
            <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>

1 Ответ

0 голосов
/ 05 октября 2011

Вы можете использовать Global.asax для реализации маршрутизации. Я думаю, что вы как-то не хватает ссылки System.Web.Routing.dll в вашем приложении. Пожалуйста, убедитесь, что вы ссылаетесь на этот. Также убедитесь, что в Global.asax вы импортируете пространство имен System.Web.Routing. Перейдите по ссылке ниже, если это поможет понять, как обрабатывать файл Global.asax в приложении веб-сайта.

http://beyondrelational.com/blogs/niladribiswas/archive/2011/06/09/adding-the-global-asax-cs-file-in-asp-net-web-site.aspx

Пожалуйста, не стесняйтесь связаться для дальнейшего обсуждения.

Спасибо

...