如何更改存储在类库中的Web服务的URL?

问题描述:

我有一个类库有一个Web服务的引用,我将这个类库包含在我的web.config中。如何更改存储在类库中的Web服务的URL?

现在我想能够动态更改Web服务的URL(就像您通常在web.config中执行的操作一样)。我怎样才能做到这一点?我试图把设置放入web.config,但改变它没有任何作用。

<applicationSettings> 
    <MyClassLibraryAppConfig.WCFServices.Properties.Settings> 
     <setting name="WebServiceKey" 
     serializeAs="String"> 
     <value>http://localhost/badaddress.asmx</value> 
     </setting>  
    </MyClassLibraryAppConfig.WCFServices.Properties.Settings> 
    </applicationSettings> 

    <applicationSettings> 
    <MyApp.Properties.Settings> 
     <setting name="WebServiceKey" 
     serializeAs="String"> 
     <value>http://localhost/goodaddress.asmx</value> 
     </setting>  
    </MyApp.Properties.Settings> 
    </applicationSettings> 

将Web服务URL移动到主机应用程序的web.config绝对是大多数情况下的方式。你提到改变web.config文件中的值没有任何作用,但我会仔细检查一下。除非你的url是硬编码的,否则这是主机进程读取它的位置。

+1

该网址设置在类库的app.config中...我如何防止它被硬编码? – zachary 2011-12-22 16:47:06

+1

只要您在web.config中具有相同键的条目,那么app.config的值将被忽略。只需将它从类库app.config复制/粘贴到主机web.config即可。 – 2011-12-22 17:13:25

+0

我确实拥有相同的密钥。我会在问题中发布更新的配置以向您展示。也许我错过了一些东西。 – zachary 2011-12-22 17:32:43

如果您使用的是Web引用,请参阅Ways to Customize your ASMX Client Proxy。如果您使用WCF,则可以使用包含EndpointAddress的代理类构造函数的重载。