首页 新闻 搜索 专区 学院

winform 调用wcf服务wcf服务含有数组参数

0
悬赏园豆:30 [已关闭问题] 关闭于 2012-08-15 15:20

winform 调用wcf服务wcf服务含有数组参数

我调用的时候应该怎么给wcf的数组参数赋值

我只是单纯的 net程序 不是 wpf和sl程序,

紧急谢谢

最好有demo或者实例

不要那种从网上随便弄来的 不知所云的东西谢谢

不起名字了的主页 不起名字了 | 初学一级 | 园豆:25
提问于:2012-08-14 14:49
< >
分享
所有回答(4)
0

你能贴一段你的单纯的net程序调用不含数组参数的WCF服务的代码吗?

Launcher | 园豆:45045 (高人七级) | 2012-08-14 14:51

点击我的博文里面 有一个关于wcf调用的问题 里面就含有 调用,我现在调用成功

但是我担心有问题 我是直接传输的数组,应该有的时候需要进行转换吧。例如sl调用的时候 会出现一种system.xx.object..的方式进行转换

支持(0) 反对(0) 不起名字了 | 园豆:25 (初学一级) | 2012-08-14 18:45

点击我的博文里面 有一个关于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控件

支持(0) 反对(0) 不起名字了 | 园豆:25 (初学一级) | 2012-08-14 18:47

@不起名字了: 按照你现在的写法,接口中定义的是什么类型的形参,你就传递什么类型的,没有任何问题。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-08-15 09:05
0

1.new一个List<T>.

2.对List<T>赋值

3.把List<T> ToArray()后传入WCF方法里.

zhangweiwen | 园豆:904 (小虾三级) | 2012-08-14 15:00
0
[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来替代数据的。

chenping2008 | 园豆:9836 (大侠五级) | 2012-08-14 18:02

首先 wcf对泛型传递有限制,或者不可以 必须需要转换,但是我的本地是手动配置引用的wcf服务

没有依托项,也没有代理类进行处理 应该有种通用方式解决 wcf调用数组参数传递问题

支持(0) 反对(0) 不起名字了 | 园豆:25 (初学一级) | 2012-08-14 18:50
0

可以正常使用 ,但是需要对数据契约类型 以及 在配置文件中添加一部分配置

不起名字了 | 园豆:25 (初学一级) | 2012-08-15 15:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册