<b>request.META</b><br>
{% for k_meta, v_meta in request.META.items %}
<code>{{ k_meta }}</code> : {{ v_meta }} <br>
{% endfor %}
Разница между ResolveUrl и ResolveClientUrl заключается в том, что ResolveClientUrl возвращает путь относительно текущей страницы, а ResolveUrl возвращает путь относительно корня сайта:
http://www.andornot.com/ blog / post / ResolveUrl-vs-ResolveClientUrl.aspx
Я бы рекомендовал использовать абсолютные пути.
Редактировать : Рик Страл опубликовал хорошую статью об этом
Edit2 : Удален бит о кешировании. Не добавляет к ответу и не обязательно является точным.
Вот еще одна статья, которая объясняет разницу между различными способами разрешения путей в ASP.NET -
Еще одно отличие, которое я заметил:
Код:
string value = "~/Docs/Hello & World.aspx";
Response.Write(HyperLink1.ResolveClientUrl(value) + "<br/>");
Response.Write(HyperLink1.ResolveUrl(value) + "<br/>");
Результат:
Документы / Hello% 20 и% 20World.aspx
/ Документы / Hello & amp; World.aspx
Обратите внимание, что VirtualPathUtility.ToAbsolute(virtualPath) вызовет исключение, если в путь включена строка запроса.
Сообщение HttpException будет выглядеть примерно так: "'~/YourVirtualPath/YourPage.aspx?YourQueryStringArg=FooBar' не является действительным виртуальным путем."
Смотрите Rick Strahl's Web Log:ResolveUrl() without Page и MSDN: VirtualPathUtility.ToAbsolute Method (String)