我們對ASP.NET自定義REST處理程序被配置這樣來處理所有傳入的請求:ASP.NET URL驗證
<add path="*" verb="*" type="REST.RESTProtocolHandler"/>
然而,傳遞一個管道字符,編碼正確或完全不,觸發驗證錯誤,似乎來自ASP.NET內部。
訪問http://localhost:8080/%7c
或http://localhost:8080/|
產生這個錯誤:
[ArgumentException: Illegal characters in path.] System.IO.Path.CheckInvalidPathChars(String path) +7489125 System.IO.Path.Combine(String path1, String path2) +40 System.Web.Configuration.UserMapPath.GetPhysicalPathForPath(String path, VirtualDirectoryMapping mapping) +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 context) +43 System.Web.Configuration.CustomErrorsSection.GetSettings(HttpContext context, Boolean canThrow) +41 System.Web.HttpResponse.ReportRuntimeError(Exception e, Boolean canThrow, Boolean localExecute) +101 System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e) +383
沒有用戶級代碼得到執行。這是一個配置選項嗎?轉載於IIS 7 & VS Studio的2008開發服務器。
堆棧溢出似乎處理這個錯誤好吧,它看起來像一個動態生成的404 MVC頁面獲取呈現爲https://stackoverflow.com/%7c。
任何想法?
如果你看看http://stackoverflow.com/%7c,你會看到你收到一個渲染頁面(你的用戶名是一個提示),所以必須有一種方法來做到這一點。 – bh213 2008-11-17 15:18:44