1

我有一组 WCF 服务,它们允许使用 JSON 格式进行消息交换。

[WebInvoke(Method = "GET", 
 ResponseFormat = WebMessageFormat.Json, 
 RequestFormat = WebMessageFormat.Json, 
 UriTemplate = "SearchStores/{accountId}/{storeName}")]
public IList<Store> SearchStores(string accountId, string storeName)

如何将空/null storeName 传递给该方法?

如果我使用以下 url 调用该方法,我会得到 404 not found 错误。

servername:port/myservice/SearchStores/1/
4

1 回答 1

0

您可以修改模板以改用查询字符串参数。

UriTemplate = "SearchStores?accountId={accountId}&storeName={storeName}"

这样,accountId如果storeName未在查询中指定,则为 null。如果 onlystoreName允许为空,您当然可以保持accountId原样并UriTemplate使用查询字符串参数构建storeName.

编辑

如果您不允许使用查询字符串,则可以UriTemplate按照MSDN UriTemplate 文档中的说明在您的中使用默认空值。在你的情况下:

UriTemplate = "SearchStores/{accountId}/{storeName=null}

请注意,一旦使用默认空值,右侧的所有段也必须具有空默认值。例如,这将是有效的:

UriTemplate = "SearchStores/{accountId}/{storeName=null}/{someParam=null}

但这不会:

UriTemplate = "SearchStores/{accountId}/{storeName=null}/{someParam}
于 2012-10-27T23:19:40.287 回答