Подтвердить что ты не робот

Как получить базовый URL в контроллере Web API?

Я знаю, что я могу использовать Url.Link() для получения URL определенного маршрута, но как я могу получить базовый URL веб-API в контроллере веб-API?

4b9b3361

Ответ 1

Вы можете использовать свойство VirtualPathRoot из HttpRequestContext (request.GetRequestContext().VirtualPathRoot)

Ответ 3

Url.Content("~/")

работал у меня!

Ответ 4

Это то, что я использую:

Uri baseUri = new Uri(Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.PathAndQuery, String.Empty));

Затем, когда я совмещаю его с другим относительным путем, я использую следующее:

string resourceRelative = "~/images/myImage.jpg";
Uri resourceFullPath = new Uri(baseUri, VirtualPathUtility.ToAbsolute(resourceRelative));

Ответ 5

Я ввожу эту службу в свои контроллеры.

 public class LinkFactory : ILinkFactory
 {
    private readonly HttpRequestMessage _requestMessage;
    private readonly string _virtualPathRoot;


    public LinkFactory(HttpRequestMessage requestMessage)
    {
        _requestMessage = requestMessage;
        var configuration = _requestMessage.Properties[HttpPropertyKeys.HttpConfigurationKey] as HttpConfiguration;
        _virtualPathRoot = configuration.VirtualPathRoot;
        if (!_virtualPathRoot.EndsWith("/"))
        {
            _virtualPathRoot += "/";
        }
    }

    public Uri ResolveApplicationUri(Uri relativeUri)
    {

        return new Uri(new Uri(new Uri(_requestMessage.RequestUri.GetLeftPart(UriPartial.Authority)), _virtualPathRoot), relativeUri);
    }

}

Ответ 6

Используйте следующий фрагмент из класса помощника Url

Url.Link("DefaultApi", new { controller = "Person", id = person.Id })

Полная статья доступна здесь: http://blogs.msdn.com/b/roncain/archive/2012/07/17/using-the-asp-net-web-api-urlhelper.aspx

Это официальный способ, который не требует помощника или обходного пути. Если вы посмотрите на этот подход, это похоже на ASP.NET MVC

Ответ 7

new Uri(Request.RequestUri, RequestContext.VirtualPathRoot)

Ответ 8

Не уверен, что это дополнение Web API 2, но RequestContext имеет свойство Url, которое является UrlHelper: Свойства HttpRequestContext. Он имеет методы Link и Content. Подробнее здесь

Ответ 9

Сначала вы получите полный URL с помощью HttpContext.Current.Request.Url.ToString(); затем замените URL вашего метода, используя Replace ("user/login", "").

Полный код будет

string host = HttpContext.Current.Request.Url.ToString().Replace("user/login", "")

Ответ 10

Основываясь на ответе Атаду, я пишу метод расширения, затем в классе контроллера вы можете получить корневой URL-адрес с помощью this.RootUrl();

public static class ControllerHelper
{
    public static string RootUrl(this ApiController controller)
    {
        return controller.Url.Content("~/");
    }
}

Ответ 11

отправьте GET на страницу, и ответ будет ответом. Базовый URL: http://website/api/

Ответ 12

  1. Аутентификация
    1.1 https://lalpathlabs.com/partner/api/v1/login
    Это используется для аутентификации существующего пользователя на основе имени пользователя и пароля.
    Запросить JSON: {"username": "", "password": ""}
    Поле Примечание Тип Длина Обязательное имя пользователя Имя пользователя Строка 3-20 Да Пароль Пароль пользователя Строка 3-30 Да
    Ожидаемый ответ: 200 (успех)
    {"firstName": "Shishir", "lastName": "Shukla", "token": "q6anhl96p9ilikkbe2r84pfatd2dh9e2"}
    400 (неверный запрос) 401 (не авторизован)

Ответ 13

От HttpRequestMessage

request.Headers.Host

Ответ 14

Al WebApi 2, просто вызывая HttpContext.Current.Request.Path;