C# 如何设置多个参数的模板格式

C# 如何设置多个参数的模板格式,c#,.net,windows,C#,.net,Windows,我正在开发示例应用程序,以使用RESTAPI从服务器获取就业数据 [OperationContract] [WebGet(UriTemplate = "/employ?id={empIDs}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] List GetEmpList(string empIDs); 为了得到雇用细节,我打电话给它,它工作得很好 GetEmpList("1");

我正在开发示例应用程序,以使用RESTAPI从服务器获取就业数据

[OperationContract]
[WebGet(UriTemplate = "/employ?id={empIDs}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
List GetEmpList(string empIDs);
为了得到雇用细节,我打电话给它,它工作得很好

GetEmpList("1");
上面的代码只需要一个ID,但我需要多个雇用细节。然后,要获得多重雇用,我需要使用URL
/employ?1d=1&id=41&id=45

但是为了解决这个问题,我调用了
GetEmpList()
API,如下所示

GetEmpList("1&id=41&id=45"); 
但这给了我一个例外:

System.ServiceModel.EndpointNotFoundException

信息:
没有可以接受消息的端点正在侦听。这通常是由不正确的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)

如果我硬编码URL为

[OperationContract]
[WebGet(UriTemplate = "/employ?id={empIDs}&id={empIDs2}&id={empIDs3}", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
List GetEmpList(string empIDs, string empIDs2, string empIDs3);
然后它就可以工作了,但问题是雇佣人数会根据需求而变化


我的问题是如何将多个参数传递给
UriTemplate

在查询字符串中传递数组类型参数没有标准方法,但您自己可以非常轻松地这样做。假设您的所有员工ID都是整数,可能最简单的方法(从技术和人类可读的角度来看)是将它们作为逗号分隔的字符串传入

示例(与原始代码相同):

电话:

在方法实现中,您只需执行以下操作:

var ids = empIDs.Split(new [] { ',' }).Select(id => Int32.Parse(id));

另请参阅。

感谢您的回放,服务器不支持“,”分隔值。在不改变服务器代码的情况下,我们能实现这个吗?。我认为这个错误是由于URL编码造成的。有没有办法避免参数编码。哦,那么你是在处理客户端而不是服务器代码?然后,您将被限制为服务器将支持的任何内容。在这种情况下,您可能必须在循环中调用
GetEmpList()
:(您所说的最后一个选项有效吗(硬编码
“/employ?id={empIDs}&id={empIDs2}&id={empIDs3}”
)真的会返回多个结果吗?我觉得这有点难以置信,但如果真是这样,那么我想你可以自己编写一个客户端,动态生成查询字符串。是的,如果我们硬编码,它会工作。如果失败,只有当我传递带有多个id的字符串时,我告诉你,如果我调用GetEmpList(“1&id=41&id=45”);然后它将抛出异常。在异常消息中,&和=是URL编码的。请检查我问题中的异常消息。
GetEmpList("1,2,13");
var ids = empIDs.Split(new [] { ',' }).Select(id => Int32.Parse(id));