C#编写用户自定义控件时,引用web的webservice,提示错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#编写用户自定义控件时,引用web的webservice,提示错误相关的知识,希望对你有一定的参考价值。

我在编写一个用户控件时,想添加 www.webxml.com.cn 的webservice,可是实例化时出错,
提示“ 在 ServiceModel 客户端配置部分中,找不到名称“WeatherWebServiceSoap”和协定“WeatherWebService.WeatherWebServiceSoap”的终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此名称匹配的终结点元素。”
网上看到有说要 需要把这个 WeatherWebServiceSoap 的 Service 和 Behavior 配置添加到 <system.serviceModel> 中。
可是不知道具体是怎么添加的啊,详细步骤不知道,求详细解决方法!

需要在初始化客户端时指定终结点(endpoint)的配置名:

WeatherService.WeatherWSSoapClient client = 
        new WeatherService.WeatherWSSoapClient("WeatherWSSoap");

追问

我改了也不行,我在平时winform那种项目引用没有出现问题,可是在制作自定义控件时就出现这种问题了,是不是和 自定义控件的项目有关系?


追答

1)你必须把控件类库项目中的App.config复制到你WinApp项目中

2)在你WinApp项目中,在设计时,因为是控件(包括自定义控件)会执行控件的构造函数,所以不要把Web服务调用放在控件的构造函数中!

    using WeatherService;
    public partial class UserControl1: UserControl
    
        public UserControl1()
        
          //不要在构造函数里调用WebService
            InitializeComponent();
        
        //写一个public方法
        public void Initialize()
        
            WeatherWSSoapClient client = 
                    new WeatherWSSoapClient("WeatherWSSoap");
            string[] regs = client.getRegionCountry();
            comboBox1.Items.AddRange(regs);
        
    

3)在使用自定义控件的窗口中,这样处理 

     private void Form1_Load(object sender, EventArgs e)
        
            userControl11.Initialize();
        

参考技术A 看看你的引用中名字是否一致 VS引用WebService 很简单的追问

名字已经和结束节点 的名字一样的啦,而且 在exe项目中调用时没问题的,就是 制作自定义控件项目时会有问题,为什么会这样呢?

追答

我记得好像不是这么实例化的啊
不如: webservice1 w = new webService1();
w.方法名()

webservice1就是你添加webservice接口时定义的名字

追问

已经都像楼上那定义了,名字也改了,还是不行

追答

http://blog.csdn.net/msra_se_team/article/details/6035862
http://www.open-open.com/home/space-361-do-blog-id-8798.html
看下这两个教程 我一般都是用第二个链接的第1个调用方式

追问

谢谢,楼上的答案可以解决问题

请问如何在c#中用WPF调用Winform变写的用户控件,知道的请给予解说,谢谢!

我在Winform里面编写了一个用户自定义控件,现在我建立一个WPF项目,如何在该项目中使用Winform编写的用户控件呢 ?

参考技术A 那个 控件 是CS 文件么?如果是 直接 把CS文件引入到项目中 引用相应命名空间即可。 参考技术B 添加WindowsFormsIntegration.dll
用WindowsFormsHost
参考技术C 把自定义控件编译成DLL,然后添加引用 参考技术D http://msdn.microsoft.com/en-us/library/ms751761.aspx

不知道你能不能看懂。这个绝对能帮助你的。我也遇到此问题,解决了。

Hosting a Windows Forms Control in WPF

参考资料:http://msdn.microsoft.com/en-us/library/ms751761.aspx

以上是关于C#编写用户自定义控件时,引用web的webservice,提示错误的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF C# 中无法访问用户控件的自定义属性

请问如何在c#中用WPF调用Winform变写的用户控件,知道的请给予解说,谢谢!

C# wpf 如何实现自定义控件,布局时,大小发生变化,内部绘制的曲线跟随变化?

在 Form.cs 中生成自定义 C# 代码,同时在设计时在 Form1.cs 中删除用户控件

C#自定义控件内多个控件的单击事件

c# 用户自定义控件的问题 winform