C# 错误响应包含一个字符串值,其中应为整数

C# 错误响应包含一个字符串值,其中应为整数,c#,xml-rpc,C#,Xml Rpc,使用此代码可以使用openerp向服务器进行数据查询,并与下面的代理进行了协商,但返回了此错误,我是新手 [XmlRpcUrl("//IP:port/xmlrpc/common")] public interface IOpenERPRPCClient { [XmlRpcMethod("login")] int autenticar(string db_name, string user, string passwd); [XmlRpcMethod("execute")

使用此代码可以使用openerp向服务器进行数据查询,并与下面的代理进行了协商,但返回了此错误,我是新手

[XmlRpcUrl("//IP:port/xmlrpc/common")]
public interface IOpenERPRPCClient
{
    [XmlRpcMethod("login")]
    int autenticar(string db_name, string user, string passwd);

    [XmlRpcMethod("execute")]
    int[] buscar(string db_name, int uid, string passwd, string obj, string action, object[] filtro);

    [XmlRpcMethod("execute")]
    int [] eliminar(string db_name, int uid, string passwd, string obj, string action, int[] ids);

    [XmlRpcMethod("execute")]

    object[] read_objeto(string db_name, int uid, string passwd, string obj, string action, int[] ids, string[] campos);


}

   private void button1_Click(object sender, EventArgs e)
   {

   int uid = autenticar();
   IOpenERPRPCClient proxy_clientes =  IOpenERPRPCClient)XmlRpcProxyGen.Create<IOpenERPRPCClient>();
   IXmlRpcProxy cliente_rpc = (IXmlRpcProxy)proxy_clientes;
   cliente_rpc.Url = "//IP:port/xmlrpc/object";

   object[] filtro = { "'Active','=','True'" };

   proxy_clientes.buscar("sgsoft", uid, "openerp", "res.partner","search",filtro);
   }
[XmlRpcUrl(“//IP:port/xmlrpc/common”)]
公共接口IOpenERPRPCClient
{
[XmlRpcMethod(“登录”)]
int autenticar(字符串db_名称、字符串用户、字符串密码);
[XmlRpcMethod(“执行”)]
int[]buscar(字符串db_name、int-uid、字符串passwd、字符串obj、字符串action、对象[]filtro);
[XmlRpcMethod(“执行”)]
int[]eliminar(字符串db_name、int-uid、字符串passwd、字符串obj、字符串action、int[]id);
[XmlRpcMethod(“执行”)]
对象[]read_objeto(字符串db_name、int-uid、string-passwd、string-obj、string-action、int[]id、string[]campos);
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
int uid=autenticar();
IOPENERPPClient proxy_clientes=IOPENERPPClient)XMLRPCPROXY.Create();
IXmlRpcProxy客户机_rpc=(IXmlRpcProxy)代理客户机;
cliente_rpc.Url=“//IP:port/xmlrpc/object”;
对象[]filtro={“活动”、“真实”、“真实”};
buscar(“sgsoft”、uid、“openerp”、“res.partner”、“search”、filtro)的代理客户;
}
错误:CookComputing.XmlRpcV2.dll中发生类型为“CookComputing.XmlRpc.XMLRPCTypeMatchException”的未处理异常


附加信息:故障响应包含字符串值,其中需要整数[fault response:struct Mapping to type fault:member faultCode Mapping to type Int32]

OpenErp错误地将faultCode作为字符串消息返回,它应该是整数

如果您想继续使用XmlRpc.NET,您所能做的就是从下载3.0.0.270测试版,这种情况在构建238中处理得更好。但请确保在XmlRpcProxy上设置AllowStringFaultCode:

clientProxy.NonStandard = XmlRpcNonStandard.AllowStringFaultCode;

我只是在猜测。XML-RPC不是很流行。该消息表明问题在于服务器正在接收您的请求,但返回一个错误作为响应。在
faultCode
字段中,故障响应似乎有一个字符串,但是.NET上的XML/RPC需要一个整数。我建议您使用Fiddler或类似的工具查看网络并查看返回的内容。