Web服务URI的动态绑定

时间:2010-07-18 10:22:34

标签: c# asp.net web-services

我有一个服务器列表,所有服务器都暴露了相同的Web服务接口,我需要从我的代码中调用它。

https://server1/service.asmx
https://server2/service.asmx
https://server3/service.asmx

我的代码需要获取这个服务器列表并在所有服务器上调用相同的函数。

我添加了对此服务的Web引用,并使用“动态”URL行为。这应该让我创建一个服务器代理对象的实例,在运行时设置URI属性,然后调用web方法,对吗?

但似乎VS生成的代码假定URI将来自应用程序的配置文件,而不是这个应用程序的情况。

    public SharpEyeWebService() {
        this.Url = global::Company.DotNet.MyProject.Properties.Settings.Default.MyWebService;
        if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
            this.UseDefaultCredentials = true;
            this.useDefaultCredentialsSetExplicitly = false;
        }
        else {
            this.useDefaultCredentialsSetExplicitly = true;
        }
    }

忽略构造函数使用的默认URL并采用上述方法是否安全?

1 个答案:

答案 0 :(得分:3)

您可以始终设置Url,所以这是安全的。您描述的“动态”仅影响默认 Url:无论是硬编码还是来自配置。

事实上,如果你自己提供这个,这是没有意义的。

这里的尴尬在于它还会根据找到的内容设置UseDefaultCredentials - 因此值得手动设置,以便您知道该值。