2010-02-25 6 views
11

Unsere Webreferenz scheint in web.config der Website, die sie verwendet, nicht definiert zu sein. Ich fand, dass es eine Konfigurationsdatei namens "Reference.map" im Ordner "Web References" gibt, die bearbeitet werden kann, aber wenn ich sie bearbeite passiert nichts. Ich habe sogar die WSDL-Datei im Ordner umbenannt, um zu sehen, ob sie einen neuen bekommen würde. Es hat nicht.Wie ändere ich eine Webreferenz in einer produktiven .NET-Website?

Muss ich einen Build erstellen, nur um die URL eines referenzierten Web Service zu ändern?

Antwort

19

Sie können eine Webreferenz als statische oder dynamische URL kennzeichnen. Wenn Sie "Dynamisch" auswählen, wird die URL zur Datei "web.config" hinzugefügt, die Sie dann in Ihrer Produktionsumgebung ändern können.

Wenn es als statisch markiert ist, wird es in die Binärdatei kompiliert und kann ohne Neuaufbau nicht geändert werden.

Wenn es bereits dynamisch ist, sucht der Code nach der dynamischen URL und wenn er dann nicht gefunden werden kann, verwendet er das Standardoriginal. Daher können Sie nur einen Eintrag in die Web-Config hinzufügen wie:

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

Ich erkannte nach Markieren Sie dies als die Antwort, dass die URL als dynamisch markiert ist, aber es ist immer noch nicht in Web-Konfiguration. Irgendwelche anderen Ideen? – JoshBaltzell

+0

Haben Sie weitere Informationen hinzugefügt, im Grunde fügen Sie nur die Zeilen in der web.config hinzu. Die genaue Syntax hängt von Ihrer Webreferenz ab. –

+0

Um das hinzuzufügen, wird die web.config einfach durch einfaches Entfernen und erneutes Hinzufügen der Webreferenz für Sie neu erstellt. Stellen Sie sicher, dass es nicht nur gelesen oder etwas ist. –

0

Auf Compact Framework müssen Sie die Konfigurationsdatei auf Ihre eigene Klasse von WebService lesen:

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"; 
     } 
    } 
Verwandte Themen