gpt4 book ai didi

c# - URL 中的点 (.) 字符错误

转载 作者:行者123 更新时间:2023-11-30 22:04:09 26 4
gpt4 key购买 nike

当我在 ASP.NET MVC 3 项目中单击以使用此 url 编辑用户时遇到问题: http://domain.com:8089/User/EditUser/username.surname?IDUser=e11a621p-df11-4687-9903-8bfc33c922cf

如果我得到另一个没有“.”的用户性格,它工作正常。

错误:

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

我尝试了一些在这里找到的技巧,例如:

  <system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>

和:

 <system.web>  
<httpRuntime relaxedUrlToFileSystemMapping="true" />

编辑用户操作上的这个属性:

   [ValidateInput(false)]

但似乎没有任何效果。此站点托管在 IIS 服务器上,当它在 Windows Azure 网站上时,它按预期工作。

谢谢。

最佳答案

如果您知道编辑页面是唯一使用 firstname.lastname url 部分的页面,您可以使用此 SO 答案中描述的方法:

Prevent static file handler from intercepting filename-like URL

具体来说,在您的情况下,添加以下 web.config 部分应该将请求路由到 MVC:

<system.webServer>
...
<handlers>
...
<add
name="userEditPage"
path="User/EditUser/*"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />

如果您在 User/EditUser/... 路径之外的 url 中使用 firstname.lastname,这将不够,并且不是通用解决方案。那会复杂得多,因为您需要像下面这样告诉 IIS:

1) 如果文件存在,提供它(这样你的 .js 文件仍然可以正常提供)

2) 在为文件扩展名执行任何其他处理程序之前,运行 MVC 处理程序并查看是否有与 url 匹配的路由。因为如果您的用户姓氏 html 怎么办?

3) 如果 MVC 处理程序不匹配 url 的任何路由,则让其他处理程序。因为如果您的项目中也有一个 .aspx 页面怎么办?

最后,对于一般情况,您可能需要考虑一些极端情况,即某人恶意创建具有名字 ../../web 和姓氏 config 的用户>?只是一个想法,但似乎您所能期望的最好的结果就是将 . 的使用限制在特定路径的 url 中。

关于c# - URL 中的点 (.) 字符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25429281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com