我正在开发 asp.net mvc 核心应用程序并尝试允许双重转义。
我的编辑网址有一个电话号码作为超链接(例如:+123)。我知道如何处理普通的 asp.net mvc 应用程序。我曾经将 web.config 文件更改为
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true"/>
</security>
</system.webServer>
但我现在正在使用没有 web.config 的 Asp.Net MVC Core 应用程序。我如何以及在哪里可以管理它?
最佳答案
ASP.NET Core 应用程序 could be hosted在各种 Web 服务器(IIS、Kestrel、Nginx、Apache 等)上。所有这些网络服务器都不知道 request filtering (特别是启用双重转义)这是一个 native IIS 功能。这是一个托管问题,ASP.NET Core 应用程序不应直接处理它。如果 URL 类似于 http://youserver.com/Home/Phone/+12345
将到达 ASP.NET Core 管道,加号将不会以任何特殊方式处理,并将以 +
的形式进入字符串模型性格。
当您在 IIS 上托管您的应用程序时,web.config 仍在使用中,因此您可以配置 <requestFiltering allowDoubleEscaping="true"/>
对于通常的 ASP.NET 应用程序。同样,您不应该害怕以非 ASP.NET Core 方式执行某些操作。您配置托管问题;这不是 ASP.NET Core 的领域。
如果你想在另一个 Web 服务器上托管应用程序,你应该检查它如何处理特殊字符。我知道 Kestrel 只会按原样传递此类 URL,因此如果托管在 Kestrel 上,您无需采取任何特定操作。
关于c# - Asp.Net MVC Core 启用双重转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49664759/