URL路由与webforms ASP.net 4和IIS6的相对路径

时间:2010-06-17 00:24:28

标签: c# asp.net routing

我尝试在IIS6服务器上运行的asp.net 4.0站点上配置路由。 我正在使用MapPageRoute,它将我带到正确的页面。到目前为止我遇到的问题:

1)无扩展网址路由

通过安装此处描述的QFE解决http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx

2)静态内容,如js,css和图像不显示

使用Chris Cavanagh的baseUrl技术解决了这里所描述的chriscavanagh.wordpress.com/2008/11/06/aspnet-routing-just-enough-rope /

2)相对网址和回发场景

没有解决。由于某种原因,相对路径未被正确解释。例如。 asp:ImageButton runat =“server”ImageUrl =“〜/ images / tree.jpg”渲染为和img一起使用src =“”。我已经能够通过将ImageUrl设置为绝对路径来强制它工作,但我无法为所有事情做到这一点。它也影响了回发场景。按钮点击将我带到(例如)localhost / website / articles / the-article_description /到localhost / website / the-article-description,这是不存在的。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您是否将RouteExistingFiles属性设置为true?

答案 1 :(得分:0)

对于像#3这样的情况,我一直在那里放置一个函数,它返回一个字符串,用作生产站点的前缀URL。所以对于你所拥有的这个部分:

mageUrl="~/images/tree.jpg"

将其调整为:

mageUrl="<%= [YourNameSpace].AppMethod.IsProd() %>/images/tree.jpg"

'AppMethod'是一些静态类,如果应用程序在生产中运行,则IsProd()函数返回指定生产路径所需的前缀。否则,如果应用程序在dev中运行,则前缀为“〜”。您可以通过读取计算机名称来确定应用程序是否在生产中运行。