Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Url重写的aspx页面。请给我建议_C#_Asp.net_Iis_Url Rewriting - Fatal编程技术网

C# Url重写的aspx页面。请给我建议

C# Url重写的aspx页面。请给我建议,c#,asp.net,iis,url-rewriting,C#,Asp.net,Iis,Url Rewriting,我是asp.net新手。我有iis版本6.0。我想重写url。实际上我在一个网站上工作。当我在web.config <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="default.aspx" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/s

我是asp.net新手。我有iis版本6.0。我想重写url。实际上我在一个网站上工作。当我在
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>


当我运行它时,它会显示错误“unrecognized configuration section rewriter”。

我的回答不会直接回答您的问题(关于URLRewitingNet库)。相反,我建议考虑微软的官方图书馆,它需要IIS 7.x或更高版本。UrlRewritingNet库虽然在几年前很有用,但现在却不是在IIS/ASP.NET中重写URL的理想方法。我提供此建议,因为您提到您是ASP.NET新手。:)

我的回答没有直接回答您的问题(关于URLRewitingNet库)。相反,我建议考虑微软的官方图书馆,它需要IIS 7.x或更高版本。UrlRewritingNet库虽然在几年前很有用,但现在却不是在IIS/ASP.NET中重写URL的理想方法。我提供此建议,因为您提到您是ASP.NET新手。:)

用户

您需要实现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,一旦everyrequest出现此问题,您可以根据需要重写url

我最近实现了这一功能,并让我知道如果您需要任何帮助,我将竭诚帮助您。

用户

您需要实现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,一旦everyrequest出现此问题,您可以根据需要重写url


我最近实施了这个,如果你需要帮助,请告诉我,我会全力帮助你。

我有iis6.0。有没有办法用iis6.0重写url?我有iis6.0。有没有办法用iis6.0重写url?请告诉我我在web.configadd中做了任何更改。在配置部分添加httpModules,如果是单独的dll,请将此dll放在bin文件夹中。我不知道,请建议我“我添加此dll”它在web.config中给出了一个错误,无法加载文件或程序集“命名空间”或其依赖项之一。系统找不到指定的文件。我添加了它``用户,您应该更改名称空间,使用您的库名称,您在项目中的何处定义了urlModule,在此给出该名称请告诉我,我在web.configadd httpModules中做了任何更改,如果它是一个单独的dll,请在bin文件夹中添加该dll。我不知道是哪个dll。请建议我``我在web.config中添加此dll,它给出了错误无法加载文件或程序集“名称空间”或其依赖项之一。系统找不到指定的文件。我添加了它``用户,您应该更改名称空间,使用您的库名称,您在项目中的何处定义了urlModule,请在此处指定该名称