所以实际上你是在使用 WCF 来创建一个 REST 服务。我已经阅读了您在回答您正在创建可能重复的问题时的意思:如何在 WCF REST 服务中具有可选参数?
您可以通过在 WebGet 或 WebInvoke 属性上省略 UriTemplate 中的查询字符串并使用WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters
.
所以这归结为:
更改方法的签名以省略参数:
CityNewsList GetNewsByCity(string DeviceType,string id /*,string limit*/);
更改属性,以便查询字符串中不需要该参数:
[OperationContract]
[WebGet(UriTemplate = "/whatever/{DeviceType}/{id}", RequestFormat = WebMessageFormat.Xml)]
代替
[OperationContract]
[WebGet(UriTemplate = "/whatever/{DeviceType}/{id}/{limit}", RequestFormat = WebMessageFormat.Xml)]
最后你会有类似的东西:
[OperationContract]
[WebGet(UriTemplate = "/whatever/{DeviceType}/{id}", RequestFormat = WebMessageFormat.Xml)]
CityNewsList GetNewsByCity(string DeviceType,string id);
实施的第一件事是:
string limit = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["Limit"];
但是:我没有尝试过,但这就是我从您在对您的问题的评论中引用的内容中所理解的。