![]() |
#1 |
Участник
|
This post is really just a Visual Basic version of this post and this post combined, please read those posts before continuing this post.
As described in the other posts, there are two ways to work with Service References – one is to keep the configuration in a .config file and the other is to do everything from code. Using the .config file First I create a Visual Basic Console application and add the two service references as explained in the other posts. Then I copied the ServiceModel part of the .config file from this post and pasted it into (and overwrite) the ServiceModel part of my new .config file. After that, it is really just to write the code Module Module1 Sub Main() Dim baseURL As String = "http://localhost:7047/DynamicsNAV/WS/" Dim navWSBinding As New System.ServiceModel.BasicHttpBinding() navWSBinding.Security.Mode = ServiceModel.BasicHttpSecurityMode.TransportCredentialOnly navWSBinding.Security.Transport.ClientCredentialType = ServiceModel.HttpClientCredentialType.Windows Dim systemService As New SystemServiceRef.SystemService_PortClient(navWSBinding, New System.ServiceModel.EndpointAddress(baseURL + "SystemService")) systemService.ClientCredentials.Windows.AllowedImpersonationLevel = Security.Principal.TokenImpersonationLevel.Delegation systemService.ClientCredentials.Windows.AllowNtlm = True Dim companies() As String = systemService.Companies() Console.WriteLine("Companies:") For Each company As String In companies Console.WriteLine(company) Next Dim cur As String = companies(0) Dim customerPageURL As String = baseURL + Uri.EscapeDataString(cur) + "/Page/Customer" Console.WriteLine(vbCrLf + "URL of Customer Page: " + customerPageURL) Dim customerService As New CustomerPageRef.Customer_PortClient(navWSBinding, New System.ServiceModel.EndpointAddress(customerPageURL)) customerService.ClientCredentials.Windows.AllowedImpersonationLevel = Security.Principal.TokenImpersonationLevel.Delegation customerService.ClientCredentials.Windows.AllowNtlm = True Dim customer10000 As CustomerPageRef.Customer = customerService.Read("10000") Console.WriteLine(vbCrLf + "Name of Customer 10000: " + customer10000.Name) Dim filter1 As New CustomerPageRef.Customer_Filter() filter1.Field = CustomerPageRef.Customer_Fields.Country_Region_Code filter1.Criteria = "GB" Dim filter2 As New CustomerPageRef.Customer_Filter() filter2.Field = CustomerPageRef.Customer_Fields.Location_Code filter2.Criteria = "RED|BLUE" Console.WriteLine(vbCrLf + "Customers in GB served by RED or BLUE warehouse:") Dim filters() As CustomerPageRef.Customer_Filter = New CustomerPageRef.Customer_Filter(1) {filter1, filter2} Dim customers() As CustomerPageRef.Customer = customerService.ReadMultiple(filters, Nothing, 0) For Each customer As CustomerPageRef.Customer In customers Console.WriteLine(customer.Name) Next Console.WriteLine(vbCrLf + "THE END") Console.ReadLine() End Sub End Module In both cases you can change the user used to connect to Web Services by setting service.ClientCredentials.Windows.ClientCredential to an instance of System.Net.NetworkCredential like: systemService.ClientCredentials.Windows.ClientCredential = New System.Net.NetworkCredential("user", "password", "domain") I hope this is helpful. Good luck Freddy Kristiansen PM Architect Microsoft Dynamics NAV Подробнее
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|