Zdezorientowany. Pisanie aplikacji VB korzystającej z usługi internetowej. Adres URL tej usługi sieciowej zmieni się w zależności od tego, gdzie jest uruchomiona aplikacja, więc muszę go zmienić w czasie wykonywania. Widzę, że domyślnie adres URL odwołania do sieci ma ustawienie „Dynamiczne”, co oznacza, że powinienem móc go zmienić w czasie wykonywania, ale jednocześnie plik app.config ma zakres ustawiony na „Aplikacja”, co oznacza jest tylko do odczytu w czasie wykonywania. Chcę użyć My.Settings.WebServiceURL = "new url"
, ale aby to zrobić, zakres musi być ustawiony na Użytkownika... Myślę, że. Ale jeśli tak jest, to co robi dla mnie zachowanie „Dynamiczne”? Czy ktoś może podać przykład kodu, jak mogę to zmienić w czasie wykonywania? Z góry dziękuję.
2 odpowiedzi
Dlaczego nie napiszesz po prostu kodu, aby zmienić usługę WebService URL z ustawienia?
oService.Url = sNewUrl
Możesz użyć wyrażenia regularnego, aby umożliwić określenie tylko głównego adresu URL, np. http://ws.test.com/
i zastosować to do każdej usługi, która wymagała przeniesienia.
http://ws.test.com:888/test.asmx
Proszę bardzo, stwórz klasę, która stanie się Twoim klientem usługi sieciowej:
Public Class WS_ClientClass
Private MyService As MyWebServiceSoap
Public Sub New()
MyService = New MyWebServiceSoapClient
End Sub
Public Sub New(ByVal strHost As String, ByVal strPort As String)
'Set up the binding element to match the app.config settings '
Dim binding = New BasicHttpBinding()
binding.Name = "MyWebServiceSoap"
binding.CloseTimeout = TimeSpan.FromMinutes(1)
binding.OpenTimeout = TimeSpan.FromMinutes(1)
binding.ReceiveTimeout = TimeSpan.FromMinutes(10)
binding.SendTimeout = TimeSpan.FromMinutes(1)
binding.AllowCookies = False
binding.BypassProxyOnLocal = False
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
binding.MaxBufferSize = 65536
binding.MaxBufferPoolSize = 524288
binding.MessageEncoding = WSMessageEncoding.Text
binding.TextEncoding = System.Text.Encoding.UTF8
binding.TransferMode = TransferMode.Buffered
binding.UseDefaultWebProxy = True
binding.ReaderQuotas.MaxDepth = 32
binding.ReaderQuotas.MaxStringContentLength = 8192
binding.ReaderQuotas.MaxArrayLength = 16384
binding.ReaderQuotas.MaxBytesPerRead = 4096
binding.ReaderQuotas.MaxNameTableCharCount = 16384
binding.Security.Mode = BasicHttpSecurityMode.None
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None
binding.Security.Transport.Realm = ""
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName
binding.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Default
'Define the endpoint address'
Dim endpointStr = "http://" & strHost & ":" & strPort & "/MyWebApp/MyWebService.asmx"
Dim endpoint = New EndpointAddress(endpointStr)
MyService = New MyWebServiceSoapClient(binding, endpoint)
End Sub
Ta implementacja umożliwia zarówno użycie ustawień domyślnych z odwołania do usługi (pierwsze przeciążenie konstruktora), jak i ustawień niestandardowych określonych w kodzie (drugie przeciążenie).
Podobne pytania
Nowe pytania
vb.net
Visual Basic.NET (VB.NET) to wielo-paradygmatyczny, zarządzany, bezpieczny dla typów, zorientowany obiektowo język programowania komputerów. Wraz z C # i F # jest to jeden z głównych języków przeznaczonych dla platformy .NET Framework. VB.NET można postrzegać jako ewolucję programu Microsoft Visual Basic 6 (VB6), ale zaimplementowano go na platformie Microsoft .NET Framework. NIE UŻYWAJ tego znacznika w przypadku pytań dotyczących języka VB6, VBA lub VBScript.