2011-07-24 1 views
0

Если URL-адрес, который поступает в приложение ASP.NET, содержит завершающие полные остановки - «.», они усекаются из свойства Url в HttpRequest.ASP.NET: HttpRequest.Url усекает конечный '.' символы

Например, если URL является "http://server/folder.../", следующий вызов:

HttpContext.Current.Request.Url.PathAndQuery; 

возвращается "/ папка /" вместо "/folder.../".

Решение, исправленное this, но оно помогает, только если Uri построен после выполнения предлагаемого кода, а HttpRequest, вероятно, сконструирован до того, как будет выполнен любой код в веб-приложении ASP.NET.

Любые идеи о том, как сохранить конечный результат. в HttpRequest.Url?

ответ

0

Вы можете добавить relaxedUrlToFileSystemMapping в свой web.config внутри <system.web> раздел.

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 

Это сохранит точки в URL-адресе.

Но по какой-то причине Url.PathAndQuery не содержит точек, в то время как RawUrl содержит их.

HttpContext.Current.Request.Request.RawUrl; 

Имейте в виду, что, вероятно, некоторые последствия для безопасности при включении relaxedUrlToFileSystemMapping.

+0

Кроме того, вы должны также добавить исправление, описанное здесь: http://stackoverflow.com/questions/6240203/system-uri-class-truncates-trailing-characters к вашему событию ApplicatinOnStart. –