首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在asp.net中转义/和其他字符?

如何在asp.net中转义/和其他字符?
EN

Stack Overflow用户
提问于 2010-02-04 02:43:04
回答 2查看 2K关注 0票数 2

当我访问http://localhost:17357/u/a%2fa/m/ssd-10HttpContext.Current.Request.Url in Application_BeginRequest时,我看到了http://localhost:17357/u/a/a/m/ssd-10,是吗?我不应该去找http://localhost:17357/u/a%2fa/m/ssd-10吗?我认为转义urls的意义是?,&,和其他特殊符号不能与它们在urls中的特殊含义混淆。也许我需要调整配置?

我创建了4个用户名

代码语言:javascript
复制
a?@!&ee
a?@!/&ee
as d
クイン

与链接为

代码语言:javascript
复制
<a href="/u/a%3f%40%21%26ee">a?@!&amp;ee</a><br>
<a href="/u/a%3f%40%21%2f%26ee">a?@!/&amp;ee</a><br>
<a href="/u/as%20d">as d</a><br>
<a href="/u/%ef%bd%b8%ef%bd%b2%ef%be%9d">クイン</a>

最后两项工作,但前两项我得到了例外

代码语言:javascript
复制
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll

Additional information: Illegal characters in path.

然后

代码语言:javascript
复制
A first chance exception of type 'System.Web.HttpException' occurred in System.Web.dll

Additional information: '/u/a?@!&ee' is not a valid virtual path.

我的页面上写着Bad Request。我如何允许这些用户名工作。如果这是不可能的,我怎么能写一个解决办法?

EN

回答 2

Stack Overflow用户

发布于 2010-02-04 02:44:21

你得再逃一次。使用%252f而不是%2f。为了澄清,当服务器接收到URL时,URL是未编码的。URL编码允许您传入服务器作为字符处理的/,而不是保留字符通常会触发的特殊函数。有关更多信息,请参见维基百科页面。

关于a?@!&ee用户名的错误,几乎可以肯定,ASP.NET遇到了一个特殊字符(甚至正确编码)的问题,这些字符不在查询字符串中(即,在?部分之后)。乔舒亚弗拉纳根谈到它在博客上发表,并认为%&*:是有问题的字符。

他指出,Dirk.Net博客文章提供了几个修复程序。首先,可以使用编辑注册表来允许受限字符(将DWORD键AllowRestrictedChars添加到HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters并将其布尔值设置为true)。或者,您可以确保您拥有.NET Framework1.1 SP1并编辑注册表,将ASP.NET VErification兼容性设置为true (DWORD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET VerificationCompatibility = 1)。第三,您可以尝试在ASPX页面上将ValidateRequest设置为false。最后,正如约书亚决定要做的那样,您可以使用查询字符串传递信息,即在?之后传递最初预期的ASP.Net (pre )。

票数 5
EN

Stack Overflow用户

发布于 2010-03-01 12:00:19

我自己写的解决方案。在获得GET请求时,有一个带有/但不考虑/的用户名是很好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2197014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档