【问题标题】:Allow CON, reserved keywords in URLs允许 CON,在 URL 中保留关键字
【发布时间】:2011-05-14 20:44:26
【问题描述】:

我需要允许在 URL 名称中包含一些保留关键字(如 CON、AUX、NUL 等)的 URL,例如:.../CON/...

现在,当我尝试访问此类 URL 时,我收到 404 错误和以下异常:

[HttpException]
   at System.Web.CachedPathData.GetConfigPathData(String configPath)
   at System.Web.HttpContext.GetFilePathData()

根据本网站Semantic urls with dots in .net 上的其他帖子,这已针对 .Net 4 进行了修复,但是由于其他依赖项,我无法升级到 .Net4,因此需要另一种方法。

【问题讨论】:

  • 我在这里遗漏了一些东西。 URL 没有保留关键字。而且我在 MSDN 的任何地方都找不到 CachedPathData 或 GetConfigPathData。
  • @yodaj007 它们在 Windows 中具有特殊意义,因为它们是设备。

标签: c# .net iis url


【解决方案1】:

ASP.NET 4 使用新设置修复了这个问题。在 web.config 中,只需添加 <httpRuntime relaxedUrlToFileSystemMapping="true"/> 到 system.web 节点。这是我的 web.config 中的一个 sn-p。

<configuration>
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true"/>
<!-- ... your other settings ... -->
</system.web>
</configuration>

【讨论】:

  • 我在 .NET 4.7.2 下运行 Web API,这没有任何作用。我可以传递包含“con”的用户电子邮件的唯一方法是,如果我将电子邮件括在引号中,即“con.xx@xxx.com”,还有什么其他方法可以在 4.7.2 中取消对这个关键字的限制?跨度>
【解决方案2】:

根据微软在 connect 和 MSDN 论坛上对此的回应,除了升级到 4.0 之外,asp.net 中没有其他解决方法。您可以尝试使用 IIS url 重写,但您仍然不能真正将 COM1(或其他)放入您的路由中。

(另见:http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx

【讨论】:

  • 链接到“连接和 MSDN 论坛”将使这个答案更有用。
  • @Ian 会尽可能编辑。从手机发帖的风险包括没有耐心在 3 英寸屏幕上通过慢速连接进行重新研究。
猜你喜欢
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 2018-02-07
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多