JSON服务传递空/空字符串参数值

时间:2012-10-27 22:46:30

标签: json wcf

我有一组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/

1 个答案:

答案 0 :(得分:0)

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

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

这样,如果未在查询中指定,accountIdstoreName将为null。如果只允许storeName为空,您当然可以保留accountId,并使用UriTemplate的查询字符串参数构建storeName

修改

如果您不允许使用查询字符串,则可以使用UriTemplate中的默认空值,如MSDN UriTemplate documentation中所述。在你的情况下:

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

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

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

但这不会:

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