C# 在.NET4中重写URL

C# 在.NET4中重写URL,c#,asp.net,url-rewriting,C#,Asp.net,Url Rewriting,在.NET4中,URL重写的最佳解决方案是什么。我正在寻找一个简单的解决方案来重写URL,如 将“myurl.com/ApplicationName/Kohls”改为“myurl.com/ApplicationName/index.html?store=Kohls”,这样我就可以通过查询字符串访问var“Kohls” 我目前正在使用Global.asax,它一直在为上述案例工作,但如果用户在应用程序之后输入myurl.com/Application,没有“/”或任何内容,我就会遇到麻烦 我目前有

在.NET4中,URL重写的最佳解决方案是什么。我正在寻找一个简单的解决方案来重写URL,如

将“myurl.com/ApplicationName/Kohls”改为“myurl.com/ApplicationName/index.html?store=Kohls”,这样我就可以通过查询字符串访问var“Kohls”

我目前正在使用Global.asax,它一直在为上述案例工作,但如果用户在应用程序之后输入myurl.com/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));
            }
        }
    }
在.NET4中重写URL的最佳解决方案是什么

如果您有选择,请使用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>

在.NET4中重写URL的最佳解决方案是什么

如果您有选择,请使用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>

您可以使用ShortURL dotnet将类似bit.ly/XXXX的URL重写为www.mysite.com/index.htm

它将默认错误页面更改为重定向文件,并根据该值是否存在,将您重定向到真实URL

如果您对此解决方案感兴趣,可以在


您可以使用ShortURL dotnet将类似bit.ly/XXXX的URL重写为www.mysite.com/index.htm

它将默认错误页面更改为重定向文件,并根据该值是否存在,将您重定向到真实URL

如果您对此解决方案感兴趣,可以在


如上所述,MVC是一种很好的方法,如果它是一种选择的话

如果您正在运行IIS 7,则有一个URL重写模块可用:

如果您运行的是IIS6,您可以使用上面提到的urlrewritingnet,或者我更喜欢使用IIRF:


mod rewrite的相似性和基于regex的规则使得它非常强大

如上所述,如果可以选择的话,MVC是一种很好的方法

如果您正在运行IIS 7,则有一个URL重写模块可用:

如果您运行的是IIS6,您可以使用上面提到的urlrewritingnet,或者我更喜欢使用IIRF:

mod rewrite的相似性和基于regex的规则使得它非常强大