在winform中使用WCF服务,如何动态设置Endpoint元素和契约

时间:2015-07-30 10:58:09

标签: .net winforms web-services wcf

我已经构建了一个测试WCF服务Service1.svc 我已将服务的服务引用添加到Winform中。它的工作正常,我可以轻松地在winform中使用WCF服务。但是我遇到了一个重大问题:

  1. 当我重命名或删除“MyProject.exe.config”文件时。它显示错误'无法找到名称为BasicHttpBinding_IService1的端点元素和合同ServiceReferenct1.IService1由于'MyProject.exe.config'文件包含我不想与客户端共享的绑定和端点地址或任何人。

    有没有办法动态设置端点元素和合同而不使用'MyProject.exe.config'文件? enter image description here
  2. App.config:

        function drawVisitorGraph() {
    
    
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Date');
            data.addColumn('number', 'Search Visitors');
            data.addColumn('number', 'Unique Visitors');
    
            data.addRow(["2015-07-01",1774,3266]);
            data.addRow(["2015-07-02",1891,3017]);
            data.addRow(["2015-07-03",1572,2730]);
            data.addRow(["2015-07-04",979,1604]);
            data.addRow(["2015-07-05",1024,1702]);
            data.addRow(["2015-07-06",2163,4097]);
    
            var chart = new google.visualization.ColumnChart(document.querySelector('#visitor_graph'));
    
            var options = {
                    bars: 'vertical',
                    vAxis: {format: 'decimal'},
                    trendlines: { 1:{},2:{}}, 
                    width: '100%',
                    height: '100%',
                    colors: ['#070979', '#EC0F13']
                }
                chart.draw(data,options);
    
        }
    
        //google.setOnLoadCallback(drawChart);
    
        google.load('visualization', '1.1', {packages: ['corechart'], callback: drawVisitorGraph});
    
    1. 如何更改服务显示的默认消息:

        

      您已创建了一项服务。   要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用命令行中的svcutil.exe工具执行此操作,语法如下:

1 个答案:

答案 0 :(得分:1)

如果您没有服务配置,可以手动创建代理。

以下是一个例子:

var binding = new BasicHttpBinding();
                var endpoint = new EndpointAddress("YourEndPoint");
                var channelFactory = new ChannelFactory<YourInterface>(binding, endpoint);

                YourInterface client = null;
                client = channelFactory.CreateChannel();
                client.YourOperation();

在上面的例子中,我使用了BasicHttpBinding。如果您正在使用其他绑定,只需使用正确的类,例如NetTcpBinding。

如果您在try / catch块中处理您的服务,您可以处理此错误并向您的客户发送最友好的消息。

希望它有所帮助。