我有一组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/
答案 0 :(得分:0)
您可以修改模板以改为使用查询字符串参数。
UriTemplate = "SearchStores?accountId={accountId}&storeName={storeName}"
这样,如果未在查询中指定,accountId
和storeName
将为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}