Хобрук: Ваш путь к мастерству в программировании

Перезапись URL в .NET 4

Какое лучшее решение для перезаписи URL-адресов в .NET 4. Я ищу простое решение для перезаписи URL-адресов, таких как

«myurl.com/ApplicationName/Kohls» на что-то вроде «myurl.com/ApplicationName/index.html?store=Kohls», чтобы я мог получить доступ к var «Kohls» через строку запроса.

В настоящее время я использую Global.asax, и он работает для вышеуказанного случая, но у меня возникают проблемы в случае, когда пользователь вводит myurl.com/Application без «/» или чего-либо еще после Application.

В настоящее время у меня есть это:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        String CurrentURLPath = Request.Path.ToUpper();

        Match nothingAfterRoot = Regex.Match(CurrentURLPath, @"/ApplicationName(/)?$", RegexOptions.IgnoreCase);
        if (nothingAfterRoot.Success)
        {
            HttpContext myContext = HttpContext.Current;
            myContext.RewritePath("/ApplicationName/Default.aspx?store=ABC");
        }
        else
        {
            Match match = Regex.Match(CurrentURLPath, @"/ApplicationName(/)?(\w)*$", RegexOptions.IgnoreCase);
            if (match.Success)
            {
                CurrentURLPath = CurrentURLPath.Trim('/');
                String store= CurrentURLPath.Split("ApplicationName/".ToCharArray())[1];
                HttpContext myContext = HttpContext.Current;
                myContext.RewritePath(String.Format("/ApplicationName/Default.aspx?store={0}", store));
            }
        }
    }
19.07.2012

Ответы:


1

Какое лучшее решение для перезаписи URL-адресов в .NET 4

Используйте структуру MVC, если у вас есть такая возможность. Перезапись URL-адресов используется по умолчанию.

Для традиционных сайтов asp.net я использую UrlRewritingNet.UrlRewriter.dll со следующим файлом web.config:

<configSections>
    <section name="urlrewritingnet" restartOnExternalChanges="true" 
        requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, 
        UrlRewritingNet.UrlRewriter" />
</configSections>

<system.web>
    <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" 
         defaultPage="default.aspx" defaultProvider="RegEx"       
         xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
        <rewrites>
          <add name="ArticleUrlRewrite" virtualUrl="^~/a-(.*)-([\w-]*)\.aspx" 
               rewriteUrlParameter="ExcludeFromClientQueryString" 
               destinationUrl="~/article.aspx?id=$1" ignoreCase="true" />
        </rewrites>
    </urlrewritingnet>
</system.web>
19.07.2012

2

Вы можете использовать ShortURL-dotnet, чтобы переписать URL, например bit.ly/XXXX, на www.mysite.com/index.htm.

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

Если вас заинтересовало это решение, вы можете найти дополнительную информацию по адресу http://sourceforge.net/projects/shorturl-dotnet/

using System;
using System.Web;

public partial class Redirection : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ShortUrl.Container oShortUrl;

        if (ShortUrl.Utils.HasValue(Request.QueryString["page"].ToString())) // checks in case ISAPIRewrite is being used
        {
            oShortUrl = ShortUrl.Utils.RetrieveUrlFromDatabase(Request.QueryString["page"].ToString());
        }
        else // using IIS Custom Errors
        {
            oShortUrl = ShortUrl.Utils.RetrieveUrlFromDatabase(ShortUrl.Utils.InternalShortUrl(Request.Url.ToString()));
        }

        if (oShortUrl.RealUrl != null)
        {
            Response.Redirect(oShortUrl.RealUrl);
        }
        else
        {
            Response.Redirect("MissingUrl.aspx");
        }
    }
}
19.07.2012

3

Как упоминалось выше, MVC — хороший подход, если это вариант.

Если вы используете IIS 7, доступен модуль перезаписи URL:

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/ и http://www.microsoft.com/en-us/download/details.aspx?id=7435

Если вы используете IIS6, вы можете использовать urlrewritingnet, как указано выше, или, как я предпочитаю, IIRF:

http://iirf.codeplex.com/

Сходство мод-перезаписи и правила, основанные на регулярных выражениях, делают его очень мощным.

19.07.2012
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..