我试图了解System.Web.HttpRequest的PathInfo属性及其设置方式。

为什么在下面的示例中为空?

var p = new System.Web.HttpRequest("file.txt","http://file.com/files/file.txt","");
//PathInfo is always empty
return string.IsNullOrEmpty(p.PathInfo)


我试图通过调用Elmah.ErrorLogPageFactory :: ProcessRequest(HttpContext context)通过Nancyfx通过Elmah接口进行管道传递。

但它不起作用,因为Elmah.ErrorLogPageFactory依赖HttpRequest :: PathInfo来解析正确的IHttpHandler,并且PathInfo始终为空。

如果有人花时间解释PathInfo的工作原理,我将不胜感激!

最佳答案

PathInfo属性是基于HttpContext类的HttpRequest私有变量计算的。没有官方方法来设置此HttpContext实例。这就是为什么每次手动创建HttpRequestHttpContext始终为null,因此PathInfo也使用空的原因。

若要获得与空字符串不同的内容,您需要使用由.NET框架为您创建的真实实例,而不是自己实例化它。

10-08 11:08