WCF PUT服务与多个参数
问题描述:
我试图消耗WCF PUT服务为:WCF PUT服务与多个参数
http://dummyurl/EmployeeUpdate?id=99999&item={"var1":true,"var2":1,"var3":1}
下面是这已经是可用的服务(应该是工作的WCF服务)
[WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, UriTemplate = "EmployeeUpdate/{id}")]
string UpdateEmp(string id, Employee emp);
public string UpdateEmp(string id, Employee emp)
{
try
{
// process data
}
catch (Exception ex)
{
// handle exception
}
return IsSuccess;
}
当我运行该服务时,获取错误消息为: 异常消息是'System.FormatException:输入字符串格式不正确。
我试图弄清楚,但无法修复。发现PUT方法只接受一个参数,服务也定义为只接收一个参数,但函数由两个参数定义。
1:我不理解如何通过我的数据作为一个参数,它是如何在功能解决
请提供此
答
好一些指导,这个异常可以通过2的方式解决 - 你必须只使用一个参数,这是由于UriTemplate:
[WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, UriTemplate = "EmployeeUpdate/{id}")]
string UpdateEmp(string id, Employee emp);
必须使用这样的:
WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, UriTemplate = "EmployeeUpdate/{id}/{item}")]
string UpdateEmp(string id, Employee item);
我已经添加了/ {item},因为在uri中您有item而不是emp。
2 - 你也可以创建一个新的对象,并把你的参数,它
public class ParamClass
{
public string id;
public Employee emp;
}
如果你选择了这个解决方案,您必须将您的UpdateEmp参数更改相应的这种变化,如:
[WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, UriTemplate = "EmployeeUpdate/{emp}")]
string UpdateEmp(ParamClass emp);
也不要忘记更改“EmployeeUpdate”参数并在archi的其他部分中使用。
谢谢。 。当我尝试了选项1以查看它是否有效时,我得到了服务器错误,并且不确定此更改是否还有其他服务无法正常工作,因此我已回滚此更改。选项2,真的,我不应该改变接口,因为它也被其他应用程序占用。 。强烈地感觉到界面是正确的,我没有以正确的方式(使用一个参数) –
在Uri'id = 99999&item = {“var1”:true,“var2”:1,“var3”:1}很明显,需要的是两个参数:id和项目 – yyg
我将检查并发布更新。 。谢谢 –