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} 网址,不适用于 {1} 网址。

如何编写映射以便它允许我将 providerName 设为可选?

4

1 回答 1

1

只有 url 片段的最后一个标记可以是可选的。您必须将您的路线模式更改为:sites/{siteName}/User/SearchByEmail/{providerName}如果您希望它工作。或者,如果参数是可选的,我的建议是在查询字符串中传递它。

于 2013-04-03T08:32:35.530 回答