如何动态设置Web Service的URL地址

2024-11-14 05:05:34
推荐回答(3个)
回答1:

  • 大概的思路是这样的:

  1. 使用Jquery绑定所有分享按钮中A标签的mouseover事件,每当想要点击某个分享按钮时,鼠标肯定就会移动到分享按钮所在的a标签上,这样就触发了mouseover事件(Jquery事件,当鼠标指针位于元素上方时,会发生 mouseover 事件);

  2. 设置了一个全局变量ShareId,一旦触发事件就获取当前分享按钮a标签的data-id属性,并将data-id赋值给ShareId。data-id保存的是文章的ID。具体的代码是这段:

  • 通过插件本身的事件和Jquery的元素事件,从另一种角度和方式实现了百度分享插件实现自定义URL的功能。


回答2:

1.在应用程序中添加配置文件(如Winform的一般是app.config,webform的一般是web.config),在目录下添加一个配置WebService引用地址的节点,如:
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文件即可。

回答3:

在客户程序中通过VS引用Web Service时,必须指定Web Service的URL地址。有时,相同的Web Service部署在多个服务器上,以防其中某些服务器出现故障导致Web Service不可用。 这样就要在代码中动态设置Web Service的URL地址,如何实现呢?

经过研究VS 的Add Web Reference…操作所生成的Web Serviceo类(myService )的.cs文件(呵呵,有点拗口 ), 发现其中的构造函数有玄机。

public partial class myService : System.Web.Services.Protocols.SoapHttpClientProtocol

{
……

public myService ()

{
this.Url = "http://192.168.1.88/ASPtest/service.asmx"; //本人所引用Web Service地址
}

……

}

在MSDN中查了下SoapHttpClientProtocol 类,其有属性Url :Gets or sets the base URL of the XML Web service the client is requesting. 意即用来设置或获取客户调用的Web Service地址。

OK,发现了这个玄机,我们就可以用来动态设置

myService service = new myService ();
service.Url = “http://192.168.1.22/ASPtest/service.asmx ”; //改变Web Service地址

当然你可以把URL保存在配置文件中,不必硬编码。