【发布时间】:2010-09-22 16:22:55
【问题描述】:
我们在 ASP.NET 上有一个自定义 REST 处理程序,它被配置为处理所有传入请求:
<add path="*" verb="*" type="REST.RESTProtocolHandler"/>
但是,将管道字符传递给它,无论是否正确编码,都会触发一个似乎来自 ASP.NET 内部的验证错误。
访问@987654321@ 或@987654322@ 会产生此错误:
[ArgumentException:路径中有非法字符。] System.IO.Path.CheckInvalidPathChars(字符串路径)+7489125 System.IO.Path.Combine(字符串路径 1,字符串路径 2)+40 System.Web.Configuration.UserMapPath.GetPhysicalPathForPath(字符串路径,VirtualDirectoryMapping 映射)+114 System.Web.Configuration.UserMapPath.GetPathConfigFilename(String siteID, VirtualPath path, String& directory, String& baseName) +72 System.Web.Configuration.UserMapPath.MapPath(String siteID, VirtualPath path) +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 context, Boolean canThrow) +41 System.Web.HttpResponse.ReportRuntimeError(异常 e,布尔 canThrow,布尔 localExecute)+101 System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e) +383
没有用户态代码被执行。这是某处的配置选项吗?在 IIS 7 和 VS Studio 的 2008 开发服务器上重现。
Stack Overflow 似乎可以处理此错误,看起来像为https://stackoverflow.com/%7c 呈现动态生成的 404 MVC 页面。
有什么想法吗?
【问题讨论】: