我知道我可以使用Url.Link()
获取特定路由的URL,但是如何在Web API控制器中获取Web API基本URL?
答案 0 :(得分:70)
在对网址的请求的操作方法" http://localhost:85458/api/ctrl/"
var baseUrl = Request.RequestUri.GetLeftPart(UriPartial.Authority) ;
答案 1 :(得分:42)
您可以使用VirtualPathRoot
(HttpRequestContext
)
request.GetRequestContext().VirtualPathRoot
属性
答案 2 :(得分:31)
select * from `reservations` where `reservation_from` between '2015-10-29' and '2015-10-29' and `rooms.type` = "test"
为我工作!
答案 3 :(得分:13)
这就是我使用的:
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));
答案 4 :(得分: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);
}
}
答案 5 :(得分:8)
使用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
答案 6 :(得分:3)
new Uri(Request.RequestUri, RequestContext.VirtualPathRoot)
答案 7 :(得分:2)
在.NET Core WebAPI(版本3.0及更高版本)中:
// dummyElement.styled.js file
export const dummyElement = styled.a`
font-size: 20px;
`; // Styles all the dummyElements, how to style them individually?
// dummyElement.JSX file
import { dummyElement } from "./dummyElement.styled";
<>
props.dummyArray.map((current, index) => (
<dummyElement
key={index}
href={"https://dummywebsite/" + current.value}
>
{current.value}
</dummyElement>
))
</>
答案 8 :(得分:1)
不确定这是否是添加了Web API 2,但RequestContext
的{{1}}属性为Url
:HttpRequestContext Properties。它有UrlHelper
和Link
方法。详情here
答案 9 :(得分:1)
首先使用完整的URL
HttpContext.Current.Request.Url.ToString();
然后使用替换(“user / login”,“”)替换您的方法网址。
完整代码将是
string host = HttpContext.Current.Request.Url.ToString().Replace("user/login", "")
答案 10 :(得分:1)
根据Athadu的回答,我编写了一个扩展方法,然后在Controller类中,您可以通过 Claim.find()
.then(claims => {
context.res = {
status: 200,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
body: JSON.parse(JSON.stringify(claims))
};
context.done();
})
this.RootUrl();
答案 11 :(得分:0)
向页面发送GET
,回复的内容将是答案。基本网址:http://website/api/
答案 12 :(得分:0)
在ASP.NET Core ApiController
中,Request
属性只是消息。但是仍然有Context.Request
处您可以获取预期的信息。我个人使用此扩展方法:
public static string GetBaseUrl(this HttpRequest request)
{
// SSL offloading
var scheme = request.Host.Host.Contains("localhost") ? request.Scheme : "https";
return $"{scheme}://{request.Host}{request.PathBase}";
}
答案 13 :(得分:0)
添加对System.Web的引用
using System.Web;
获取主机或所需的URL的任何其他组件
string host = HttpContext.Current.Request.Url.Host;
答案 14 :(得分:-1)
来自HttpRequestMessage
request.Headers.Host
答案 15 :(得分:-1)
Al WebApi 2,只是调用HttpContext.Current.Request.Path;