如何在IIS重写提供程序中访问请求正文?

时间:2013-07-18 20:39:05

标签: .net iis url-rewriting url-rewrite-module

我使用IRewriteProvider interface编写了自定义重写提供程序,并将其安装在IIS中。它工作正常,但我需要访问请求的内容以及URL。 newsgroup posting表示我应该能够访问HttpContext.Current,但在我的测试中,它显示为 null

有没有办法从重写提供程序访问请求内容?

2 个答案:

答案 0 :(得分:1)

它很可能是null,因为它从未处理任何上下文。如果您想根据内容修改网址,则应在应用程序中实现自定义IHttpModule。

http://msdn.microsoft.com/en-us/library/ms972974.aspx

答案 1 :(得分:0)

用于重写URL的IHttpModule类...

public class UrlRewriteModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        try
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
            context.EndRequest += new EventHandler(context_EndRequest);
        }
        catch (Exception exc)
        {
            ...special logging of exc...
        }
    }
    void context_BeginRequest(object sender, EventArgs e)
    {
        string fullOrigionalpath = Request.Url.ToString();
        Context.RewritePath("...whatever you want...");
    }
}

和web.config ......

<configuration>
  <system.web>
    <httpModules>
      <add name="UrlRewriteModule" type="UrlRewriteModule"/>
    </httpModules>