在我的研究中,我发现了两种方法. 两者都需要修改Global.Asax中的Application_BeginRequest过程,您可以在其中运行代码来进行实际的URL映射(我的数据库视图包含所有友好的URL及其映射的“真实”
两者都需要修改Global.Asax中的Application_BeginRequest过程,您可以在其中运行代码来进行实际的URL映射(我的数据库视图包含所有友好的URL及其映射的“真实”URL).现在的诀窍是让你的请求在没有aspx扩展的情况下通过.NET引擎运行.我发现的两种方式是:
>使用通配符应用程序扩展映射在.NET引擎中运行所有内容.
>创建一个自定义的aspx错误页面,并告诉IIS向其发送404.
现在这是我的问题:
有没有理由其中一个比另一个更好?
在我的开发服务器上玩游戏时,我注意到的关于#1的第一件事就是它更糟糕的首页扩展,不是很大的交易,但这就是我习惯连接到我的网站的方式.我对#1的另一个问题是,尽管我的托管公司对我很宽容(因为我是他们最大的客户)并且会考虑做这样的事情,但他们对可能出现的任何安全风险都持谨慎态度.
`#2效果很好,但我只是觉得它没有#1那么高效.我只是在妄想吗?
谢谢
我过去也使用过#2.它更有效,因为与通配符映射不同,ASP.NET引擎不需要“处理”对所有其他资源的请求,如图像文件,静态HTML,CSS,Javascript等.
或者,如果你不介意你的URL中的.aspx扩展名你可以使用:http://myweb/app/idx.aspx/products/1 – 这很好.
话虽如此,真正的解决方案是使用IIS 7,其中ASP.NET运行时是IIS HTTP模块堆栈的完全成熟部分.