首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为多个HostHeaders配置Webapi自托管

如何为多个HostHeaders配置Webapi自托管
EN

Stack Overflow用户
提问于 2012-12-15 00:41:24
回答 2查看 765关注 0票数 3

I如何将我的asp.net mvc4 web应用程序接口响应多个主机标头名称,就像我们添加多个绑定做iis网站一样。

有人知道我该怎么做吗?或者有没有可能?

我的默认应用程序(仍然是命令行)如下所示:

代码语言:javascript
复制
    static void Main(string[] args)
    {
        _config = new HttpSelfHostConfiguration("http://localhost:9090");

        _config.Routes.MapHttpRoute(
            "API Default", "{controller}/{id}",
            new { id = RouteParameter.Optional });

        using (HttpSelfHostServer server = new HttpSelfHostServer(_config))
        {
            server.OpenAsync().Wait();
            Console.WriteLine("Press Enter to quit.");
            Console.ReadLine();
        }

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-15 19:33:35

您可以尝试配置路由,使其在主机标头上具有匹配的自定义约束(在下面的示例中,只有当主机标头等于myheader.com时,路由才会匹配):

代码语言:javascript
复制
_config.Routes.MapHttpRoute(
        "API Default", "{controller}/{id}",
        new { id = RouteParameter.Optional },
        new { headerMatch = new HostHeaderConstraint("myheader.com")});

约束代码应该类似于:

代码语言:javascript
复制
public class HostHeaderConstraint : IRouteConstraint
{
    private readonly string _header;

    public HostHeaderContraint(string header)
    {
         _header = header;
    }

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        var hostHeader = httpContext.Request.ServerVariables["HTTP_HOST"];
        return hostHeader.Equals(_header, StringComparison.CurrentCultureIgnoreCase);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2013-01-24 21:29:43

@Mark Jones answer适用于像您的示例这样的自托管解决方案,但如果您最终使用IIS,则只需添加多个具有所需主机标头的绑定即可。不需要更改路由。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13882811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档