У нас есть настраиваемый обработчик REST на ASP.NET, который настроен таким образом, чтобы обрабатывать все входящие запросы:
<add path="*" verb="*" type="REST.RESTProtocolHandler"/>
Однако, передавая ему символ канала, правильно закодированный или вообще не запущенный, запускается ошибка проверки, которая, как представляется, поступает изнутри ASP.NET.
Доступ к http://localhost:8080/%7c
или http://localhost:8080/|
дает эту ошибку:
[ArgumentException: Незаконные символы в пути.] System.IO.Path.CheckInvalidPathChars(String path) +7489125 System.IO.Path.Combine(String path1, String path2) +40 System.Web.Configuration.UserMapPath.GetPhysicalPathForPath(String path, отображение VirtualDirectoryMapping) +114 System.Web.Configuration.UserMapPath.GetPathConfigFilename(String siteID, путь VirtualPath, String & directory, String & baseName) +72 System.Web.Configuration.UserMapPath.MapPath(String siteID, путь VirtualPath) +30 System.Web.Configuration.UserMapPath.MapPath(String siteID, String path) +31 System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +297 System.Web.Hosting.HostingEnvironment.MapPathInternal(VirtualPath virtualPath, Boolean permitNull) +51 System.Web.CachedPathData.GetConfigPathData(String configPath) +341 System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) +110 System.Web.HttpContext.GetFilePathData() +36 System.Web.HttpContext.GetConfigurationPathData() +26 System.Web.Configuration.RuntimeConfig.GetConfig(контекст HttpContext) +43 System.Web.Configuration.CustomErrorsSection.GetSettings(контекст HttpContext, Boolean canThrow) +41 System.Web.HttpResponse.ReportRuntimeError(Exception e, Boolean canThrow, Boolean localExecute) +101 System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, контекст HttpContext, исключение e) +383
Никакой код пользователя не выполняется. Это вариант конфигурации где-то? Воспроизведено на сервере разработки IIS 7 и VS Studio 2008.
Переполнение стека, похоже, обрабатывает эту ошибку ОК, похоже, что динамически созданная страница 404 MVC получает рендеринг для https://stackoverflow.com/%7c.
Любые идеи?