Nik*_*dze 68 url base-url asp.net-web-api asp.net-web-api2
我知道我可以Url.Link()用来获取特定路由的URL,但是如何在Web API控制器中获取Web API基本URL?
mLa*_*Lar 73
在对url" http:// localhost:85458/api/ctrl / " 的请求的action方法中
var baseUrl = Request.RequestUri.GetLeftPart(UriPartial.Authority) ;
Run Code Online (Sandbox Code Playgroud)
这将得到你 http:// localhost:85458
Kir*_*lla 43
你可以使用()的VirtualPathRoot属性HttpRequestContextrequest.GetRequestContext().VirtualPathRoot
Ath*_*adu 35
Url.Content("~/")
Run Code Online (Sandbox Code Playgroud)
为我工作!
Dav*_*tin 15
这是我使用的:
Uri baseUri = new Uri(Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.PathAndQuery, String.Empty));
Run Code Online (Sandbox Code Playgroud)
然后,当我将它与另一个相对路径组合时,我使用以下内容:
string resourceRelative = "~/images/myImage.jpg";
Uri resourceFullPath = new Uri(baseUri, VirtualPathUtility.ToAbsolute(resourceRelative));
Run Code Online (Sandbox Code Playgroud)
Dar*_*ler 10
我将此服务注入我的控制器.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在 .NET Core WebAPI(3.0 及以上版本)中:
var requestUrl = $"{Request.Scheme}://{Request.Host.Value}/";
Run Code Online (Sandbox Code Playgroud)
使用Url帮助程序类中的以下代码段
Url.Link("DefaultApi", new { controller = "Person", id = person.Id })
Run Code Online (Sandbox Code Playgroud)
完整的文章可在此处获取:http: //blogs.msdn.com/b/roncain/archive/2012/07/17/using-the-asp-net-web-api-urlhelper.aspx
这是官方的方式,不需要任何帮助或解决方法.如果你看一下这种方法就像ASP.NET MVC
new Uri(Request.RequestUri, RequestContext.VirtualPathRoot)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124890 次 |
| 最近记录: |