WEB API 2 自托管主机名问题
Posted
技术标签:
【中文标题】WEB API 2 自托管主机名问题【英文标题】:WEB API 2 Self-hosted hostname issues 【发布时间】:2014-07-24 20:18:56 【问题描述】:我正在尝试创建一个自托管的 Web api 服务。我遵循了一个教程,它在我的本地计算机上运行良好。
localhost/api/values 使用预期的 JSON 响应良好。
现在,我有一个绑定到 DNS“myserver.mycompany.com”的服务器。当我在此服务器上启动我的 WebApi 2 服务并尝试调用 myserver.mycompany.com/api/values 时,出现 404 page not found 错误。
如果我在此服务器上本地浏览并调用 localhost/api/values url,它可以正常工作。
这是 Startup 类的代码:
using Owin;
using System.Web.Http;
namespace SelfHostedWebApi2
public class Startup
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/controller/id",
defaults: new id = RouteParameter.Optional
);
appBuilder.UseWebApi(config);
这是我启动服务器的方式:
using Microsoft.Owin.Hosting;
using System;
using System.Net.Http;
namespace SelfHostedWebApi2
public class Program
static void Main()
string baseAddress = "http://localhost:80/";
// Start OWIN host
try
WebApp.Start<Startup>(new StartOptions(url: baseAddress));
HttpClient client = new HttpClient();
var response = client.GetAsync(baseAddress + "api/values").Result;
Console.WriteLine(response);
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
catch (Exception ee)
Console.WriteLine("Erreur : " + ee.ToString());
Console.ReadLine();
感谢您的帮助
【问题讨论】:
【参考方案1】:您应该更改您的 baseAddress 以使其端点与您的主机名匹配,或者您可以使用 WeakWildcard *
来匹配所有可能的主机名。
这个应该可以:string baseAddress = "http://*:80/";
【讨论】:
以上是关于WEB API 2 自托管主机名问题的主要内容,如果未能解决你的问题,请参考以下文章