url - वेब एपीआई नियंत्रक में बेस यूआरएल कैसे प्राप्त करें?




asp.net-web-api base-url (9)

मुझे पता है कि मैं एक विशिष्ट मार्ग के यूआरएल प्राप्त करने के लिए Url.Link() का उपयोग कर सकता हूं, लेकिन मैं वेब एपीआई नियंत्रक में वेब एपीआई बेस यूआरएल कैसे प्राप्त कर सकता हूं?


अथडु के जवाब पर आधार, मैं एक विलुप्त होने की विधि लिखता हूं, फिर नियंत्रक कक्षा में आप इसे रूट यूआरएल प्राप्त कर सकते हैं। रूट यूआरएल this.RootUrl();

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

अल WebApi 2, बस HttpContext.Current.Request.Path बुलाओ;


किसी पृष्ठ पर एक GET भेजें और उत्तर दिया गया उत्तर उत्तर होगा। बेस यूआरएल: http://website/api/


मैं इस सेवा को अपने नियंत्रकों में इंजेक्ट करता हूं।

 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);
    }

}


यूआरएल सहायक वर्ग से निम्नलिखित स्निपेट का प्रयोग करें

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

यह आधिकारिक तरीका है जिसके लिए किसी भी सहायक या कामकाज की आवश्यकता नहीं होती है। यदि आप इस दृष्टिकोण को देखते हैं तो एएसपी.नेट एमवीसी की तरह है


सुनिश्चित नहीं है कि यह एक वेब एपीआई 2 अतिरिक्त है, लेकिन RequestContext में एक Url प्रॉपर्टी है जो एक UrlHelper : HttpRequestContext गुण । इसमें Link और Content विधियां हैं। विवरण here


HttpRequestMessage

request.Headers.Host

new Uri(Request.RequestUri, RequestContext.VirtualPathRoot)




asp.net-web-api2