srinivas vadepally Ответов: 3

Переписывание Url - адресов в Global.asax


Привет друзья,
Я хочу переписать свой URL-адрес,поэтому я написал следующий код.
protected void Application_BeginRequest(object sender, EventArgs e)
        {
   		HttpContext context = HttpContext.Current;
                string path = context.Request.Path.ToLower();
                if(path.Equals("/AndhraPradesh.aspx"))
                {
                    context.RewritePath("~/AP");
                }
        }


Но все равно я получаю url как "http://localhost:22313/AndhraPradesh.aspx"

Пожалуйста, помогите мне и предложите мне переписать url-адрес в global.asax

Благодарный вам

3 Ответов

Рейтинг:
1

I.explore.code

Посмотрите, помогут ли эти ссылки:

Переписывание URL-адресов с помощью ASP.NET[^]

Переписывание URL-адресов ASP.NET[^]

Кроме того, короткий URL-адрес не содержит никаких расширений, поэтому IIS все равно не сможет его обработать и выдаст 404, а для управления URL-адресами без расширений вам понадобится сторонний фильтр ISAPI, установленный на стороне сервера. Однако если вы используете IIS7, то встроенный инструмент под названием URLRewrite может позаботиться об этом (хотя и не уверен). Кроме того, я бы рекомендовал использовать регулярное выражение для сопоставления паттернов пути, как это работает большинство механизмов перезаписи URL-адресов.

В качестве альтернативы вы можете попробовать использовать path.contains вместо path.Равно как и предполагает эта ссылка:

RewritePath[^]

Надеюсь, это поможет...Овации.


srinivas vadepally

Привет гладиатрон,
я получаю HTTP 404. Я также пробовал с path.contains,получая ту же проблему.
Есть ли какие-либо не так с кодом?

I.explore.code

You are missing the key point here, rewritten URLs can only work if the new urls do actually exist on the server. I think you caught the opposite end of the stick with URL rewriting, the purpose of the URL rewriting is to make URLs memorable and hackable so that you can type in something like http://www.somsite.com/products/xbox/250GB but actually land on /products?prodname=xbox&cap=250gb. The former URL actually doesn't exist on the server but the latter one does and this is how URL rewriting works. I would also recommend using HTTPhandlers to the URL rewriting unless you only have to do it at the beginning of the application. So, if "AndhraPradesh.aspx" is a physical page on your server you cannot return "AP" to the user rather it works the other way round, when the user tries to access "AP" they would internally be forwarded to the physical file/page. hope this clears things up...

srinivas vadepally

Большое вам спасибо,гладиатрон, небольшая ошибка свела меня с ума на два дня.
в любом случае спасибо.
желаю хорошо провести время.

I.explore.code

Добро пожаловать! Если мое решение решило или помогло решить вашу проблему, не могли бы вы нажать на кнопку "Принять решение", чтобы принять его и оценить?? так что люди знают, что это было решено. Большое спасибо.

Рейтинг:
1

Mujeebahmad

Try this.

protected void Application_BeginRequest(object sender, EventArgs e)
        {
   		HttpContext context = HttpContext.Current;
                string path = context.Request.Path.ToLower();
                if(path.Equals("/andhrapradesh.aspx"))
                {
                    context.RewritePath("~/AP");
                }
        }


CHill60

Вы не добавили ничего нового к этой теме 6-летней давности! Придерживайтесь ответов на новые вопросы, где ОП все еще нуждается в помощи

Рейтинг:
0

qwench

string path = context.Request.Path.ToLower();
                if(path.Equals("/AndhraPradesh.aspx"))


путь записывается в нижнем регистре, и вы сравниваете его со строкой с прописными буквами.


jaket-cp

Вы отвечаете на вопрос 4-летней давности.
Это хорошо и все такое, но вы можете получить голос, даже если вы дали хорошее решение.
Возможно, это хорошая идея-удалить ваш ответ.