“URL重写”/使用.net 3.0和IIS 6.0进行路由

时间:2008-12-17 15:42:02

标签: iis iis-6

我想知道对于我希望用户输入

的情况,最好的方法是什么

http://myserver/something/20

并重定向(301或302)到

http://someotherserver/applications/something/modules/default.aspx?id=20

对于.net 3.5和IIS 7我找到了一些解决方案,但不幸的是我在Windows 2003上遇到了.net 3.0和IIS 6.0,如果可能的话我不想在服务器上安装任何东西。我可以更改虚拟目录的设置,如果必须更改整个站点。

HTTPModules和web.config只是ASP.net如果我没有完全弄错,那么因为每次默认不将/ 20发送到ASP.net,这无济于事?

任何人都可以给我一些提示,我可以设置类似的东西吗?

4 个答案:

答案 0 :(得分:3)

我看到没有将301重定向直接放入IIS管理器的唯一方法是使用通配符映射

Link

答案 1 :(得分:1)

您可以获得ASP的帮助。

使用内容在您的某个文件夹中创建一个404.asp文件: -

<%

Dim id : id = CLng(Mid(Request.QueryString, InStrRev(Request.QueryString, "/")+1))
Response.Redirect "http://someotherserver/applications/something/modules/default.aspx?   id=" & id

%>

在IIS管理器中的某些文件夹的自定义错误调整为URL和/something/404.asp

请注意,传递给404客户错误页面的查询字符串值如下所示: -

404; http://myserver:80/something/20

编辑:或者您可以使用404.ashx自定义错误页面,然后使用更熟悉的.NET代码。

答案 2 :(得分:1)

.*扩展名映射到与应用程序配置中的虚拟目录文件映射中的.aspx相同的DLL。然后在web.config httpHandlers部分中,将URL映射到该类型。

答案 3 :(得分:1)

  1. 在IIS中,右键单击虚拟目录,选择属性
  2. 目录标签下,点击配置... 按钮。
  3. 映射标签下的通配符应用程序地图(实施顺序)下:点击插入... 按钮。
  4. 浏览并选择 C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll ,请确认未选中该文件是否存在。
  5. 向上移动 aspnet_isapi.dll到列表顶部。
  6. 点击确定,确定,然后尝试一下。如果看不到它,请尝试回收应用程序池。
  7. 我们遇到的情况是.Net Routing正在我们的开发PC上运行,而不是在IIS 6和Windows 2003的测试和生产服务器上运行。这解决了我们的问题。