通过命令行(wsdl工具)更新动态Web引用

本文关键字:更新 动态 Web 引用 工具 命令行 wsdl | 更新日期: 2023-09-27 18:04:54


使用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文件吗?

通过命令行(wsdl工具)更新动态Web引用

我认为您无法使用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";
    }
}

请注意,它通过Settings类从"appSettings"而不是从"applicationSettings"读取,因此您必须修改app.config。而且它也不包含"UseDefaultCredentials"内容。