mat*_*at3 4 asp.net http url-rewriting url-routing
我正在尝试创建类似于diggbar的东西:http://digg.com/http://cnn.com
我正在使用Visual Studio 2010和Asp Development服务器.
但是,我无法让ASP dev服务器处理请求,因为它在路径中包含"http:".我试图创建一个HTTPModule来重写BeginRequest中的URL,但是当url是http:// localhost:5957/http://yahoo.com时,不会调用事件处理程序.如果url是http:// localhost:5957/http/yahoo.com,则会调用事件处理程序
总结一下
有任何想法吗?
来自ASP.Net团队的Stefan:http://forums.asp.net/p/1431148/3221542.aspx
在当前版本的ASP.NET中,包含冒号字符等字符的Url将被拒绝作为潜在的安全威胁.其历史原因是底层NTFS文件系统支持可以使用"yourfile.txt:hiddendata.txt"等名称访问的备用资源流.阻止Urls中的冒号字符可防止写得不好的应用程序意外使用备用资源流.
当前版本的ASP.NET中还存在一个限制,即传入的Urls需要映射到NTFS文件系统以确定托管配置数据.
在ASP.NET 4中,可以选择性地删除这些限制.但是这些更改是在Beta 4版本的ASP.NET 4中 - 它们不在Beta 1中.我们尝试了本论坛帖子前面列出的Url,并确认使用我们的ASP.NET 4内部版本,您可以使用该样式Url并处理它没有任何400错误.
-Stefan
来自ASP.Net团队的Stefan
我从即将发布的关于Beta 2的新文档中删除了以下内容:
ASP.NET 4引入了用于扩展允许的应用程序URL的范围的新选项.最简单和最有用的更改是ASP.NET为开发人员提供了允许更长的Urls的选项.以前的版本将Url路径长度限制为260个字符(NTFS文件路径限制).在ASP.NET 4中,开发人员可以选择使用两个新的httpRuntime配置属性来增加(或减少,如果他们选择)适用于其应用程序的此限制:
修改"maxRequestPathLength"的值以允许更长或更短的Url路径(Url sans协议,服务器和查询字符串的部分).修改"maxQueryStringLength"的值以允许更长或更短的查询字符串.ASP.NET 4还允许开发人员调整ASP.NET的Url字符检查使用的字符集.当ASP.NET在Url的路径部分中找到无效字符时,它会拒绝带有HTTP 400错误的请求.在以前的版本中,Url字符检查仅限于一组固定的字符.在ASP.NET 4中,开发人员可以使用另一个新的httpRuntime配置属性自定义字符集检查:
默认情况下,"requestPathInvalidChars"属性包含七个被视为无效的字符(由于配置是Xml文件,因此小于和大于符号以及&符号被编码).然后,开发人员可以根据应用程序的需要扩展或减少无效字符集.请注意,ASP.NET 4仍将拒绝包含ASCII字符范围0x00-0x1F中的字符的任何Url路径,因为这些字符被视为无效的Url字符(RFC 2396认为这些字符无效,并且在运行IIS6或更高版本的Windows服务器上. sys协议设备驱动程序也会自动拒绝包含这些字符的Url).
| 归档时间: |
|
| 查看次数: |
25624 次 |
| 最近记录: |