0

RouteConfig では、会社のプロファイル名をルート URL の一部として使用するために、会社名ごとにルートを追加しています。xyz.com/acme

これはうまく機能しているように見えますが、これに関する一般的なアドバイス、またはそれを解決するためのより良い方法を期待していました. 特に私たちが成長し、10000以上の会社があり、したがって10000以上のルートがあるかもしれないので、私は特にパフォーマンスについて心配しています.

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

foreach (string companyName in companyNameList)
{
    routes.MapRoute(
        name: companyName,
        url: companyName,
        defaults: new { controller = "CompanyProfile", action = "Index" });
}

アドバイスをいただければ幸いです。

4

1 に答える 1

3

次の形式のルートを 1 つだけ持つことはできませんか。

        routes.MapRoute(
            name: "Default",
            url: "{company}/{controller}/{action}/{id}",
            defaults: new { controller = "CompanyProfile", action = "Index", id = UrlParameter.Optional },
            constraints: new { company= new CompanyConstraint(companyNames) });

会社名が有効であることを確認するチェックCompanyConstraintはどこにありますか? IRouteConstraintこのようなもの:

internal class CompanyConstraint: IRouteConstraint
{
    public CompanyConstaint(IList<string> companies)
    {
        this.companies = companies;
    }

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        object company;
        if (!values.TryGetValue("company", out company) || company == null)
        {
             return false;
        }

        return companies.Contains(company.ToString());
    }
}

乾杯、ディーン

于 2012-08-01T13:26:53.567 に答える