我对IIS 7.0的网址重写存在很大问题。
我编写了简单的模块来重写我的NET3.5 / IIS7 Web应用程序。这是代码的一部分。
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
if (app.Request.Path.Contains("pagetorewrite.aspx"))
HttpContext.Current.RewritePath("~/otherpage.aspx");
}
我在web.config中注册我的模块:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<add name="MyModule" type="MyModule" preCondition="" />
在使用经典ASP管道的IIS 7.0(Vista)下,它工作得很完美,但是当我将管道模式更改为Integrated时,它就会停止工作。调试器/事件/日志文件中没有异常,错误和任何内容 - 仅在浏览器中找不到该页面的消息。最严重的是页面名称看起来像是错误的,或者是从原始页面的部分和重新页面合并而来。
我已经在另一台计算机(也是vista -but x64-和iis 7.0)上部署了我的代码,它在两种模式下都能完美运行。 它看起来有配置问题或者是什么?
答案 0 :(得分:0)
只是猜测:使用程序集名称限定您的类型(type =“MyModule,MyAssembly”)
答案 1 :(得分:0)
好的,建议您使用已经过测试的Microsoft发布的URL重写模块。
http://learn.iis.net/page.aspx/460/using-url-rewrite-module/
希望你喜欢它。
答案 2 :(得分:0)
最后我找到了工作解决方案。
.NET 3.5 TransferRequest