我已经使用IRewriteProvider
interface编写了一个自定义重写提供程序,并将其安装在 IIS 中。它工作正常,但我需要访问请求的内容以及 URL。一个新闻组张贴表明我应该能够访问HttpContext.Current
,但在我的测试中它显示为null。
有什么方法可以从重写提供程序访问请求内容?
我已经使用IRewriteProvider
interface编写了一个自定义重写提供程序,并将其安装在 IIS 中。它工作正常,但我需要访问请求的内容以及 URL。一个新闻组张贴表明我应该能够访问HttpContext.Current
,但在我的测试中它显示为null。
有什么方法可以从重写提供程序访问请求内容?
它很可能为 null,因为它从未处理任何上下文。如果你想根据内容修改 url,你应该在你的应用程序中实现一个自定义的 IHttpModule。
用于重写 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>