熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

動態IP的Web service調用

2013-11-13 10:03:19  來源: .NET編程 

  系統架構需要使用Web service來降低耦合性但是現場布置的時候WebService的地址是不固定的

  可以使用修改exe文件的對應的nfig中的設置來達到目的

  nfig文件是一個XML配置文件其中描述了Web Service的地址節點@configuration/systemserviceModel/client/endpoint 中的address屬性的值就是Web Service的地址例如

  創建一個類DynamicURL來進行Web Service地址修改操作

  class DynamicURL
    using SystemDiagnostics;
    using SystemXml;
    using SystemIO;
    using SystemWindowsForms;
    namespace TestWSDL
    {
        public class DynamicURL
        {
            static public string LoadURL()
            {
                string exeConfigFile = ProcessGetCurrentProcess()MainModuleFileName + nfig;
                if (FileExists(exeConfigFile))
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDocLoad(exeConfigFile);
                    XmlNode xn = xmlDocSelectSingleNode(@configuration/systemserviceModel/client/endpoint);
                    if (xn != null)
                    {
                        XmlElement xe = (XmlElement)xn;
                        if (xe != null)
                        {
                            return xeGetAttribute(address);
                        }
                    }
                }
                else
                {
                    MessageBoxShow(stringFormat(找不到文件{} exeConfigFile));
                }
                return stringEmpty;
            }

  static public long SaveURL(string URL)
            {

  string exeConfigFile = ProcessGetCurrentProcess()MainModuleFileName + nfig;
                if (FileExists(exeConfigFile))
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDocLoad(exeConfigFile);
                    XmlNode xn = xmlDocSelectSingleNode(@configuration/systemserviceModel/client/endpoint);
                    if (xn != null)
                    {
                        XmlElement xe = (XmlElement)xn;
                        if (xe != null)
                        {
                            xeSetAttribute(address URL);
                            xmlDocSave(exeConfigFile);
                            return ;
                        }
                    }
                }
                else
                {
                    MessageBoxShow(stringFormat(找不到文件{} exeConfigFile));
                }
                return ;
            }
        }
    }

  為了測試建議Web Service HelloWorld 裡面有方法HelloWorld返回字符串Hello World 拷貝HelloWorld成HelloWorld然後將HelloWorld的返回值設置成This is the second Hello world Web Service  以便調用的時候可以區別兩個Web Service

  在新建的窗體上添加個按鈕和個TextBox控件

  往工程中添加服務引用 ServiceReferenceVS會自動添加 上服務描述

  Form為測試窗體

  測試窗體
    using System;
    using SystemWindowsForms;

  namespace TestWSDL
    {
        public partial class Form : Form
        {
            public Form()
            {
                InitializeComponent();
                thistextBoxURLText = DynamicURLLoadURL();
            }

  private void buttonModifyURL_Click(object sender EventArgs e)
            {
                if ( == DynamicURLSaveURL(thistextBoxURLText))
                {
                    MessageBoxShow(修改Web Service的URL成功);
                }
            }

  private void buttonCallWebService_Click(object sender EventArgs e)
            {
                thistextBoxResultText = ;
                ServiceReferenceServiceSoapClient client = new TestWSDLServiceReferenceServiceSoapClient();
                thistextBoxResultText = clientHelloWorld();
            }
        }
    }

  測試步驟

  在IIS中為兩個Web Services分別設置虛擬目錄HelloWorld和HelloWorld

  運行程序點擊調用按鈕查看調用結果再將URL地址從修改成點擊修改Web Service地址再調用Web Service查看結果

  兩次Web Service調用結果分別為 Hello WorldThis is the second Hello world Web Service

  可以看到修改Web Service地址的效果了


From:http://tw.wingwit.com/Article/program/net/201311/12414.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.