Codice proxy del servizio Web generato da wsdl.exe rispetto a "Aggiorna il riferimento Web" - Dovrei preoccuparmi?

StackOverflow https://stackoverflow.com/questions/8949945

Domanda

Utilizzando Visual Studio 2010, abbiamo una soluzione con diversi siti Web (non progetti di applicazioni Web) e progetti di riga di comando e Winforms. Tutti i target .NET 2.0. Molti dei progetti hanno riferimenti Web ai servizi Web ASMX nei siti Web.

I servizi Web cambiano frequentemente, quindi quando compiliamo tutto, dobbiamo passare manualmente tutti i progetti e aggiornare i riferimenti al servizio Web. Ora sono riuscito ad automatizzarlo usando disco.exe e wsdl.exe. Ma sono preoccupato per le differenze nel codice generato da wsdl.exe e un aggiornamento manuale del riferimento Web in vs.

wsdl.exe genera codice come questo:

public WebServiceName() {
    string urlSetting = System.Configuration.ConfigurationManager.AppSettings["WebServiceName"];
    if ((urlSetting != null)) {
        this.Url = urlSetting;
    }
    else {
        this.Url = "http://example/webservicename.asmx";
    }
}

Mentre VS genera codice come questo:

private bool useDefaultCredentialsSetExplicitly;

public WebServiceName() {
    this.Url = global::ProjectName.Properties.Settings.Default.ProjectName_WebServiceNameWebService_WebServiceName;
    if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
        this.UseDefaultCredentials = true;
        this.useDefaultCredentialsSetExplicitly = false;
    }
    else {
        this.useDefaultCredentialsSetExplicitly = true;
    }
}

public new string Url {
    get {
        return base.Url;
    }
    set {
        if ((((this.IsLocalFileSystemWebService(base.Url) == true) 
                    && (this.useDefaultCredentialsSetExplicitly == false)) 
                    && (this.IsLocalFileSystemWebService(value) == false))) {
            base.UseDefaultCredentials = false;
        }
        base.Url = value;
    }
}

public new bool UseDefaultCredentials {
    get {
        return base.UseDefaultCredentials;
    }
    set {
        base.UseDefaultCredentials = value;
        this.useDefaultCredentialsSetExplicitly = true;
    }
}

private bool IsLocalFileSystemWebService(string url) {
    if (((url == null) 
                || (url == string.Empty))) {
        return false;
    }
    System.Uri wsUri = new System.Uri(url);
    if (((wsUri.Port >= 1024) 
                && (string.Compare(wsUri.Host, "localHost", System.StringComparison.OrdinalIgnoreCase) == 0))) {
        return true;
    }
    return false;
}

Tutto il resto è fondamentalmente lo stesso. Devo preoccuparmi di questo? Significa certamente che dovremmo cambiare il modo in cui gli URL di override sono archiviati nei file App.config e web.config. WSDL.EXE utilizza AppSettings, VS utilizza configurazioni/applicazioni.

PS: so che ASMX è vecchio e WCF è nuovo. Sono bloccato con questo.

Aggiornamento: ha trovato questo articolo che parla della differenza:

Come condividere URL dinamici su più progetti di applicazioni Web

http://weblogs.asp.net/bradleyb/archive/2006/05/04/445133.aspx

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top