2010-02-11 3 views
5

In einer ziemlich standardisierten Art und Weise habe ich eine Web-Referenz zu einem SOAP-Service in Jira für eine Erweiterung erstellt, die ich gerade erstelle (Jira ist ein Issue-Tracker für diejenigen, die damit nicht vertraut sind). Visual Studio generiert automatisch eine .Settings-Datei und eine app.config, die die Web-Service-URL enthält.Können Sie den Speicherort/den Endpunkt einer dynamischen Webverweis zur Laufzeit in .NET ändern?

Da ich eine Erweiterung/Plugin zu einer ALM-Produkt entwickeln wir bauen, die Verbraucher der Erweiterung wird derjenige sein, der letztlich darüber entscheidet, wo diese Web-Service-Punkte, weil es mit der integrierten werden Verbraucherinstanz von Jira. Angenommen, die Web-Service-URL wird gespeichert und aus einer Datenbank abgerufen.

Wie kann ich den automatisch generierten Dienst dazu bringen, eine URL aus einer Datenbank anstatt aus dem generierten app.config zu verwenden?

Hinweis: Wir verwenden v2.0 des Frameworks, WCF ist also keine Option.

Antwort

10

Auch im 2.0-Webdienst sollten Sie in der Lage sein, die "Url" -Eigenschaft Ihres Web-Service-Proxys auf den gewünschten Wert zu ändern.

+3

@John - schwitzen Sie nicht darüber, Mann. Das haben wir alle schon durchgemacht. –

+1

Wo befindet sich diese "Url" Liegenschaft? – capdragon

+0

. Net 3.5 scheint dies völlig anders zu handhaben. Ich verwende diese Methode in meinem alten, .Net 2.0-Projekt. Wer weiß, wie man das mit C# 3.5 macht? Ich nehme an, ich könnte es zum Funktionieren bringen, indem ich die Endpoint.Address Einstellung ändere, jedoch funktioniert das nicht, eine Adresse benutzt SSL und die andere nicht. Wie kann ich den Endpunkt zurücksetzen? – RLH

1

Verwenden Sie den Konstruktor des Clients, der die URI zulässt.

+0

Es schien nicht im Konstruktor zu sein, ich musste die Url-Eigenschaft wie von Otávio –

+1

vorgeschlagen haben Sie haben es im Konstruktor, aber es ist einfacher, es mit der URL-Eigenschaft als Otavio vorgeschlagen: HelloWorld.HelloWorldClient Hallo = neue HelloWorld.HelloWorldClient ("BasicHttpBinding_IHel loWorld", neue EndpointAddress ("http: // localhost: 8888/BasicHost/Hello World")); –