我正在尝试使用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方法只接受一个参数,并且服务也定义为只接收一个参数,但函数是用两个参数定义的。我不了解如何将我的数据作为一个参数传递以及如何在函数中解析它
请提供一些指导
答案 0 :(得分:0)
嗯,这个例外可以通过2种方式解决:
1-你必须只使用一个参数,这是由于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中你有项而不是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的其他部分使用。