0

以下のような Web API サービスがあります。

[HttpGet]
public UserProfile SearchByEmail(string siteName, string providerName, string email)
{}

providerName をオプションにしたいのですが、以下の URL が機能するはずです。

{0}: http://www.domain.com/sites/siteName1/providerName1/User/SearchByEmail?email=email1
{1}: http://www.domain.com/sites/siteName1/User/SearchByEmail?email=email1

以下のマッピングを作成しました。

 config.Routes.MapHttpRoute(
               name: "SearchUserByEmail",
               routeTemplate: "sites/{siteName}/{providerName}/User/SearchByEmail",
                defaults: new
                {
                    controller = "User",
                    action = "SearchByEmail",
                    providerName = UrlParameter.Optional
                });

ただし、{0} URL のみをサポートしており、{1} URL では機能しません。

providerName をオプションにできるようにマッピングを記述する方法は?

4

1 に答える 1

1

URL フラグメントの最後のトークンのみをオプションにすることができます。sites/{siteName}/User/SearchByEmail/{providerName}これを機能させたい場合は、ルートパターンを次のように変更する必要があります。または、パラメーターがオプションの場合は、クエリ文字列で渡すことをお勧めします。

于 2013-04-03T08:32:35.530 に答える