获取当前ASP.NET Web Api 2动作的URL

8
在ASP.NET Web API 2中,我该如何获取当前操作的Url?以下是一个示例。
[HttpGet]
[Route("api/someAction")]
public SomeResults GetAll()
{

    var url = /* what to write here*/
    ....

}
3个回答

16

ApiController基类(您自己的控制器必须从中派生)之一的属性称为Request

Translated:

ApiController base class (from which your own controller must be derived) has a property called Request:

// Summary:
//     Defines properties and methods for API controller.
public abstract class ApiController : IHttpController, IDisposable
{
    // ...

    //
    // Summary:
    //     Gets or sets the HttpRequestMessage of the current System.Web.Http.ApiController.
    //
    // Returns:
    //     The HttpRequestMessage of the current System.Web.Http.ApiController.
    public HttpRequestMessage Request { get; set; }

    // ...
}

这将使您可以访问HttpRequestMessage,该对象具有以下方法:

//
// Summary:
//     Gets or sets the System.Uri used for the HTTP request.
//
// Returns:
//     Returns System.Uri.The System.Uri used for the HTTP request.
public Uri RequestUri { get; set; }

使用 Request.RequestUri 获取当前操作的 URL。它将返回一个 Uri 对象,使您可以访问请求 URI 的每个部分。

最后,您可能会发现以下 SO 问题有用:


4

Request.RequestUri.ToString();

在MVC上可以使用:

Request.Url.ToString();

另请参阅:

Request.Url.GetLeftPart(UriPartial.Authority);

并且

Request.RequestUri.GetLeftPart(UriPartial.Authority);

例如,两者都会返回以下内容:

http://localhost:60333/


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接