net中的WebService怎么动态配置引用地址

net中的WebService怎么动态配置引用地址,第1张

分析了一下,解决方案如下:

1.在应用程序中添加配置文件(如Winform的一般是app.config,webform的一般是web.config),在<appSettings>目录下添加一个配置WebService引用地址的节点,如:<add key="webServiceAddr" value="http://192.168.1.105:800/TestWebService.asmx?wsdl"/>

2.项目添加Web服务引用,如引用名为ServiceCenter,引用成功后,在打开目录Web References》ServiceCenter》Reference.map》Reference.cs的Reference.cs文件,这是一个WebService代理类。

不同的WebService生成的代理类不同。构造函数如:

public TestWebService() {

this.Url = global::WebServiceApp.Properties.Settings.Default.WebServiceApp_ServiceCenter_TestWebService

if ((this.IsLocalFileSystemWebService(this.Url) == true)) {

this.UseDefaultCredentials = true

this.useDefaultCredentialsSetExplicitly = false

}

else {

this.useDefaultCredentialsSetExplicitly = true

}

}

重新添加一个构造函数,带有WebService引用地址的参数:

public TestWebService(string url)

{

if (!string.IsNullOrEmpty(url))

{

this.Url = url

}

else

{

this.Url = global::WebServiceApp.Properties.Settings.Default.WebServiceApp_ServiceCenter_TestWebService

}

if ((this.IsLocalFileSystemWebService(this.Url) == true))

{

this.UseDefaultCredentials = true

this.useDefaultCredentialsSetExplicitly = false

}

else

{

this.useDefaultCredentialsSetExplicitly = true

}

}

3.在应用程序中应用

private void button1_Click(object sender, EventArgs e)

{

string result = string.Empty

string serviceAddr = string.Empty

try

{

serviceAddr = System.Configuration.ConfigurationManager.AppSettings["webServiceAddr"].ToString()

//此处调用的是我们自己定义的构造函数,参数为WebService引用的地址

ServiceCenter.TestWebService webService = new WebServiceApp.ServiceCenter.TestWebService(serviceAddr)

result = webService.Test()

}

catch (Exception ex)

{

result = ex.Message

}

MessageBox.Show(serviceAddr + "++++" + result)

}

4.修改WebService引用地址:

在Winform应用程序中,app.config等应用程序配置文件在生成的时候自动生成到了bin目录下面的应用程序名.exe.config文件,修改里面的webServiceAddr节点即可。

需要注意的一点就是,如果生成的时候把app.config文件也生成到了bin目录下,此时修改app.config里面的配置是无效,还必须得修改(应用程序名.exe.config)这个文件。如果是把webservice引用地址放在自定义的的xml文件中,则生成到bin目录下,响应bin目录下的xml文件即可。

调用webservice接口

一般分为静态调用和动态调用

静态调用就是在项目中直接添加服务引用或者web服务引用;

静态调用特点:服务参数包含复杂类型(比如自定义的一些实体类)用它比较方便,但是服务如果改变(服务地址更新,服务内容更新)就需要在项目中更新服务引用,重新编译程序;

动态调用特点:对于服务参数包含复杂类型的处理不是很好,如果服务内容改变不需要重新编译程序;

大致想到就这样,详细的你可以在网上找找相关的网文,很多资料可以参考的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11522218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存