通过在"Web引用"中的本地代理类中添加一个构造函数,这个构造函数是以Web Service的URL为参数的重载方法实现动态调用WebService。
在Visual Studio中添加Web Service引用时,会生成一个Web References方件夹, 显示这个文件夹中的所有文件,我们会发现Reference.cs文件,打开这个文件,里面定义了一个从System.Web.Services.Protocols.SoapHttpClientProtocol继承的类,在它的构造函数中,有这样的初始化语句:
this.Url = http://localhost/webservice/MessageService.asmx;
我们只要增加一个带有参数的构造函数,参数就是我们要引用的Web Service的url, 就可以实现动态添加对Web Service的引用。
对于ASP.net 1.1
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Web.Services.WebServiceBindingAttribute(Name="MessageServiceSoap", Namespace="http://tempuri.org/")]
- public class MessageService : System.Web.Services.Protocols.SoapHttpClientProtocol {
- public MessageService(string serviceAddress) {
- this.Url = "http://localhost/webservice/MessageService.asmx";
- }
-
- public MessageService(string serviceAddress) {
- this.Url = serviceAddress;
- }
- }
对于ASP.net 2.0
- [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.42")]
- [System.Diagnostics.DebuggerStepThroughAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Web.Services.WebServiceBindingAttribute(Name="MessageServiceSoap", Namespace="http://tempuri.org/")]
- public partial class MessageService : System.Web.Services.Protocols.SoapHttpClientProtocol {
- private System.Threading.SendOrPostCallback RegisterUserOperationCompleted;
- ……
- private System.Threading.SendOrPostCallback SendReplyMessageOperationCompleted;
- private bool useDefaultCredentialsSetExplicitly;
- public MessageService() {
- this.Url = "http://localhost:8023/webservice/MessageService.asmx";
- if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
- this.UseDefaultCredentials = true;
- this.useDefaultCredentialsSetExplicitly = false;
- }
- else {
- this.useDefaultCredentialsSetExplicitly = true;
- }
- }
-
- public MessageService(string msurl)
- {
- this.Url = msurl;
- if ((this.IsLocalFileSystemWebService(this.Url) == true))
- {
- this.UseDefaultCredentials = true;
- this.useDefaultCredentialsSetExplicitly = false;
- }
- else
- {
- this.useDefaultCredentialsSetExplicitly = true;
- }
- }
- }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。