3

複数のバインドを追加するときのように、複数のホストヘッダー名に応答する asp.net mvc4 Web API を iis Web サイトに配置します。

誰も私がそれを行うことができる方法を知っていますか? または可能であれば?

私のデフォルトのアプリ(まだコマンドライン)は次のようになります:

    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();
        }

    }
4

2 に答える 2

2

ホスト ヘッダーで一致するカスタム制約を持つようにルートを構成してみることができます (以下の例では、ホスト ヘッダーが myheader.com と等しい場合にのみルートが一致します)。

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

制約コードは次のようになります。

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);
    }
}
于 2012-12-15T11:33:35.080 に答える
0

@Mark Jonesの回答は、サンプルのような自己ホスト型ソリューションで機能しますが、IISを使用することになった場合は、必要なすべてのホストヘッダーを含む複数のバインドを追加するだけです。ルートを変更する必要はありません。

于 2013-01-24T13:29:42.710 に答える