网址重写aspx page.pls给了我一个建议

时间:2011-03-04 06:01:26

标签: c# asp.net iis url-rewriting

我是asp.net的新手。我有iis版本6.0。我想重写网址。其实我在网站上工作。当我在web.config

中使用此标记时
  <urlrewritingnet
    rewriteOnlyVirtualUrls="true"
    contextItemsPrefix="QueryString"
    defaultPage="default.aspx"
    defaultProvider="RegEx"
    xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >
    <rewrites>
      <add name="this-is-a-long-page-name"  virtualUrl="^~/this-is-a-long-page-name"
            rewriteUrlParameter="ExcludeFromClientQueryString"
            destinationUrl="~/Default.aspx"
            ignoreCase="true" />
    </rewrites>
  </urlrewritingnet>

当我运行它时,它会显示错误“无法识别的配置部分重写器”。

2 个答案:

答案 0 :(得分:4)

用户,

你需要实现urlrewritemodule,所有请求都来到urlrewritemodule。 你可以在那里写下你的逻辑

public  class UrlModule : IHttpModule
    {
        public virtual void Init(HttpApplication application)
        {
            application.BeginRequest += new EventHandler(this.BaseUrlModule_BeginRequest);
        }
        public virtual void Dispose()
        {
        }
        protected virtual void BaseUrlModule_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = (HttpApplication)sender;
            Rewritethepath(application.Request.Path, application);
        }

        private  void Rewritethepath(string requestedPath, HttpApplication application)
        {
           application.Context.RewritePath("/yournewurl", String.Empty, QueryString);                
        }
    }

在您的web.config中输入此条目

<httpModules>
                <add type="namespace.UrlModule, namespace" name="UrlModule"/>
            </httpModules>

在你的web.config中注册你的httpmodule,一旦每次请求你都可以重写你想要的网址,

我最近实现了这一点并让我知道如果你需要任何帮助,我会默默地帮助你。

答案 1 :(得分:1)

我的回复没有直接回答您的问题(关于UrlRewritingNet库)。相反,我建议考虑使用Microsoft官方IIS URL Rewrite库,该库需要IIS 7.x或IIS Express。 UrlRewritingNet库虽然在几年前很有用,但现在不太适合在IIS / ASP.NET中重写URL。我提供这个建议,因为你提到你是ASP.NET的新手。 :)