2010-02-25 9 views
11

Il nostro riferimento Web non sembra essere definito in web.config del sito Web che lo consuma. Ho trovato che c'è un file di configurazione chiamato "Reference.map" nella cartella "Web References" che sembra modificabile, ma quando li modifico non succede nulla. Ho persino rinominato il file WSDL nella cartella per vedere se ne otterrebbe uno nuovo. Io non l'ho fatto.Come si modifica un riferimento Web in un sito Web di produzione .NET?

Devo eseguire una compilazione solo per modificare l'URL di un servizio Web di riferimento?

risposta

19

È possibile contrassegnare un riferimento Web come URL statico o dinamico. Se scegli dinamico, allora aggiungerà l'URL al web.config che potrai quindi modificare nel tuo ambiente di produzione.

Se è contrassegnato come statico, viene compilato nel file binario e non è modificabile senza una ricostruzione.

Se è già dinamico, il codice cerca l'URL dinamico e, se non riesce a trovarlo, utilizza l'originale predefinito. Pertanto, si può semplicemente aggiungere una voce nella configurazione web come:

<applicationSettings> 
    <MySystem.Properties.Settings> 
     <setting name="MySystem_MyService" serializeAs="String"> 
      <value>http://mysystem/service.asmx</value> 
     </setting> 
    </MySystem.Properties.Settings> 
</applicationSettings> 
+0

mi sono reso conto dopo contrassegnando questo come la risposta che l'URL è contrassegnato come dinamico, ma non è ancora in configurazione web. Altre idee? – JoshBaltzell

+0

Abbiamo aggiunto alcune informazioni in più, in pratica aggiungete semplicemente le linee nel web.config. La sintassi esatta dipende dal tuo riferimento web. –

+0

Per aggiungere a ciò, è sufficiente rimuovere e riaggiungere il riferimento Web per ricostruire il proprio web.config. Assicurati che non sia solo di sola lettura o altro. –

0

Su Compact Framework è necessario leggere il file di configurazione sul proprio classe di WebService:

public partial class YourService : System.Web.Services.Protocols.SoapHttpClientProtocol { 

    /// <remarks/> 
    public HandTerminalService() { 
     string appSettings = string.Concat(Assembly.GetExecutingAssembly().GetName().CodeBase, ".config"); 
     XmlDocument xmlDocument = new XmlDocument(); 
     xmlDocument.Load(appSettings); 
     XmlNode xmlNode = xmlDocument.SelectSingleNode("//configuration/appSettings/add[@key = 'Proxy.YourServiceService']"); 
     if (xmlNode.Attributes["value"].Value != null) 
     { 
      this.Url = string.Concat(xmlNode.Attributes["value"].Value, ""); 
     } else 
     { 
      this.Url = "http://<IP_or_DNS-Name>:<Port>/YourService.asmx"; 
     } 
    } 
Problemi correlati