我使用WSDL.exe工具更新动态Web引用时遇到问题。
当我在VS中使用“更新Web引用”时,一切都按预期工作。
下面是生成的代码(Reference.cs文件的一部分):
public MyService() {
this.Url = global::ServerReference.Properties.Settings.Default.ServerReference_Reference_MyService;
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
我从应用程序属性中获取必要的信息,然后将其存储在配置文件中,因此可以在不重建应用程序的情况下进行更改。
但是当我使用以下命令时:
.\tools\wsdl.exe /l:cs /n:ServerReference /o".\ServerReference\Web References\Reference\Reference.cs" http://localhost:52956/MyService/MyService.asmx
它是在Reference.cs文件中使用固定的URL地址创建的。
是否有人知道如何更改命令以实现与Visual Studio中相同的 Reference.cs 文件?
答案 0 :(得分:1)
我认为你不能用wsdl.exe生成相同的代码。 但是,如果您想要实现的主要功能是生成从app.config获取服务地址的代码,那么您可以将wsdl.exe与“/ appsettingurlkey”开关一起使用。
您将获得的代码如下:
public WebService1() {
string urlSetting = System.Configuration.ConfigurationManager.AppSettings["ConfigKeyForServiceUrl"];
if ((urlSetting != null)) {
this.Url = urlSetting;
}
else {
this.Url = "http://localhost:65304/WebService1.asmx";
}
}
请注意,它从'appSettings'读取而不是从'applicationSettings'通过Settings类读取,因此您必须修改app.config。它也不包含'UseDefaultCredentials'的内容。