Как добиться динамических имен файлов подкачки в ASP.NET? - PullRequest
1 голос
/ 20 января 2009

Я бы хотел, чтобы мой сайт создавал оптимизированные для поисковых систем ссылки для динамического контента (вместо того, чтобы искать данные через строку запроса). Так:

mysite/SomeModifiableNname.aspx
вместо

mysite/DynamicContent.aspx?entryID=2345
.

Помимо умного обработчика 404, который перенаправляет запросы, или настраиваемого обработчика MIME-типа в IIS, есть ли хорошее решение для этого в ASP.NET?
Помните, что имя файла подкачки можно изменять во время выполнения.

Ответы [ 4 ]

3 голосов
/ 20 января 2009

Вы можете использовать HttpHandler , как видно здесь .

2 голосов
/ 20 января 2009

это широкая тема, обычно называемая перезаписью URL ...

Есть несколько способов сделать это. Я бы посоветовал заглянуть в модуль перезаписи IIS.

Возможно, вам также следует изучить возможности маршрутизации URL, разработанные для MVC и доступные в ASP.NET 3.51

.

ОБНОВЛЕНИЕ: Я хотел бы знать больше о ваших намерениях. Это последнее предложение смущает меня.

0 голосов
/ 21 января 2009

Спасибо всем за мысли. С предоставленной информацией я нашел решение, которое мне нужно:

В Global.asax (или через HttpModule) прослушайте событие BeginRequest и примените туда путь Context.Rewrite:

void Application_BeginRequest(object sender, EventArgs e)
{
    string fullOrigionalpath = Request.Url.ToString();

    if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
    {
        Context.RewritePath("Default.aspx?id=Games");
    }

}

И затем в методе OnPreInit страницы, которая будет обрабатывать эти запросы, необходимо снова применить путь перезаписи, чтобы PostBacks работал должным образом:

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);

    if (Request.QueryString["id"] == null)
        return;
    if (Request.QueryString["id"].ToLower().Equals("games"))
        Context.RewritePath("Games", "", "id=Games");
}

Ключ, который делает эту работу лучше, чем многие модули перезаписи URL, с которыми я сталкивался, заключается в том, что пути могут быть динамическими. То есть созданные URL-адреса могут управляться данными.

0 голосов
/ 20 января 2009

Я делал это в прошлом с UrlRewrite.Net. Для этого в IIS7

также имеется встроенное средство.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...