你能贴一段你的单纯的net程序调用不含数组参数的WCF服务的代码吗?
点击我的博文里面 有一个关于wcf调用的问题 里面就含有 调用,我现在调用成功
但是我担心有问题 我是直接传输的数组,应该有的时候需要进行转换吧。例如sl调用的时候 会出现一种system.xx.object..的方式进行转换
点击我的博文里面 有一个关于wcf调用的问题 里面就含有 调用,我现在调用成功
但是我担心有问题 我是直接传输的数组,应该有的时候需要进行转换吧。例如sl调用的时候 会出现一种system.xx.object..的方式进行转换
public string SendCheckedImgName()
{
try
{
string[] strImgNameArray = GetCheckedImageName();
if (strImgNameArray == null)
return "没有要发送的图片";
if (strImgNameArray.Length <= 0)
return "没有要发送的图片";
if (serviceOper != null)
{
return serviceOper.Recevice(strImgNameArray);
}
else
{
return "服务不可用请重试";
}
}
catch (Exception ex)
{
return "发送失败请重试" + ex.Message;
}
}
public IService2 GetIService2()
{
WSHttpBinding WShb = new WSHttpBinding();//使用的协议必须与wcf服务端所用的协议相同
WShb.MaxReceivedMessageSize = 65535000;
WShb.Security.Message.ClientCredentialType = System.ServiceModel.MessageCredentialType.Windows;
WShb.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Windows;
EndpointAddress epo = new EndpointAddress("http://localhost:8732/wcf/mex"); //这里请改回你当时的wcf服务器地址
ChannelFactory<IService2> cf = new ChannelFactory<IService2>(WShb, epo);//创建客户端频道
return cf.CreateChannel();
}
手动配置的 因为我的是Activex控件
@不起名字了: 按照你现在的写法,接口中定义的是什么类型的形参,你就传递什么类型的,没有任何问题。
1.new一个List<T>.
2.对List<T>赋值
3.把List<T> ToArray()后传入WCF方法里.
[ServiceContract] interface IOperate{ [OperateContract] int Add(int[] arr); } public MyService:IOperate { public int Add(int[] arr) { int sum 0; foreach(int i in arr) { sum+=i; } return sum; } }
手写代码,有可能有错误!
你在添加服务引用的时候,对于数组,可以选择List来替代数据的。
首先 wcf对泛型传递有限制,或者不可以 必须需要转换,但是我的本地是手动配置引用的wcf服务
没有依托项,也没有代理类进行处理 应该有种通用方式解决 wcf调用数组参数传递问题
可以正常使用 ,但是需要对数据契约类型 以及 在配置文件中添加一部分配置