Знать, содержится ли текущий URL в RouteTable.Routes - PullRequest
0 голосов
/ 19 мая 2018

в моем Global.asax у меня есть эти правила

    protected void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.EnableFriendlyUrls();
        RouteTable.Routes.MapPageRoute("", "Home", "~/Default.aspx");
        RouteTable.Routes.MapPageRoute("", "Carrello", "~/Carrello.aspx");
        RouteTable.Routes.MapPageRoute("", "Checkout", "~/Checkout2.aspx");
        RouteTable.Routes.MapPageRoute("", "Ricerca-Prodotto/{Filtri}/{Pagina}", "~/ProductsSearch.aspx");
        RouteTable.Routes.MapPageRoute("", "Prodotto/{ProductId}", "~/Product.aspx");
        RouteTable.Routes.MapPageRoute("", "Prodotti/{Menu}/{Marca}/{Categoria}/{Pagina}", "~/Product.aspx");

    }

У меня также есть UrlRewrite для управления

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        System.Collections.Generic.List<Rewrite> rewrites = Rewrite.getRules();
        String fullOriginalPath = Request.Url.ToString();
        int index = 0;
        if(fullOriginalPath.Contains("www."))
            index = fullOriginalPath.IndexOf('/', fullOriginalPath.IndexOf("e-miko.com")) + 1;
        else
            index = fullOriginalPath.IndexOf('/', fullOriginalPath.IndexOf("localhost")) + 1;

        string chiave = fullOriginalPath.Substring(index);

        Utility.WriteToLog(chiave);

        foreach (Rewrite r in rewrites)
        {
            if(r.Chiave == chiave)
            {
                string url = "/" + r.Pagina;
                if (r.Param1 != null)
                    url += "/" + r.Param1;
                if (r.Param2 != null)
                    url += "/" + r.Param2;
                if (r.Param3 != null)
                    url += "/" + r.Param3;
                if (r.Param4 != null)
                    url += "/" + r.Param4;
                if (r.Param5 != null)
                    url += "/" + r.Param5;
                Context.RewritePath(url);
            }
        }

    }

Я также попытался поместить эти строки в web.config

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/PageNotFound.aspx" responseMode="ExecuteURL" />
    <remove statusCode="500" subStatusCode="-1" />
    <error statusCode="500" path="/PageNotFound.aspx" responseMode="ExecuteURL" />

Но все мои страницы с urlRewrite помещаются в PageNotFound.aspx

Если текущий URL-адрес не содержится в этих правилах, существует ли способ перенаправить пользователя наДомашняя страница?Например, если текущим URL является / CheckoutError, как я могу перенаправить пользователя в / Home?

Спасибо

1 Ответ

0 голосов
/ 21 мая 2018

Ваш вопрос является дубликатом

маршрутизация веб-форм asp.net 4.0 - маршрут по умолчанию / подстановочный знак

Вам просто нужно

RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}", "~/Home.aspx");
...