Все встроенные методы структуры в MVC, например Url.Action
или Url.Content
, производят только относительные URL-адреса в полученном html. Многие ответы SO предоставили способы получить абсолютный путь. For example:Есть ли причина не использовать абсолютные пути в asp.net MVC?
using System;
using System.Web;
using System.Web.Mvc;
public static class UrlExtensions
{
public static string Content(this UrlHelper urlHelper, string contentPath, bool toAbsolute = false)
{
var path = urlHelper.Content(contentPath);
var url = new Uri(HttpContext.Current.Request.Url, path);
return toAbsolute ? url.AbsoluteUri : path;
}
}
работает для меня.
Мой вопрос в том, есть ли когда-либо причина не использовать абсолютный путь? Это лучше, с точки зрения того, чтобы сделать ваш сайт более открытым для веб-лома, инструментов доступности, RSS-каналов и т. Д. Есть ли нижняя сторона? Похоже, что абсолютный путь должен быть по умолчанию, а относительный путь должен быть пользовательской реализацией.