动态Web API URL

时间:2014-06-11 16:15:06

标签: c# asp.net-web-api

我使用以下代码从我的api获取数据:

using (var client = new HttpClient())
{
    try
    {
        string url = "http://localhost:58639/api/cars/" + carId + "?includeOwners=true";

        var model = client
            .GetAsync(url)
            .Result
            .Content.ReadAsAsync<Car[]>().Result;
        Car c = model[0];
        newCount = c.Persons.Count;

        /* More Code */
    }
}

在WebApiConfig中使用此路线:

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

有没有办法动态创建URL,这样如果网站托管在localhost以外的某个地方,这仍然有效?我试图用Url.RouteUrl和UrlHelper做到这一点,但我无法找到一种方法来包含&#34;?includeOwners = true&#34;用它们过滤。

2 个答案:

答案 0 :(得分:0)

一种方法是将服务器部分放在配置文件(web.config等)中,并在构建网址时从那里读取。

只需在appSetting中添加基本网址部分,然后使用ConfigurationManager.AppSettings["NameOfKey"]

进行阅读

答案 1 :(得分:-2)

请尝试以下代码:

string domainName = ((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.ServerVariables["HTTP_HOST"];

您可以动态加载主机和端口或整个域名。