web前端

位置:IT落伍者 >> web前端 >> 浏览文章

动态IP的Web service调用


发布日期:2018年04月03日
 
动态IP的Web service调用

系统架构需要使用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地址的效果了

上一篇:GhostDoc 自动生成 XML 注释

下一篇:如何通过Web Services上传和下载文件