Как настроить serviceclient для использования веб-службы MDS
Я работаю над разработкой веб-приложения, которое использует веб-службу MDS с помощью C#; эта веб - служба размещена в Сервер А использовать IIS. Это веб-приложение отлично работает, когда я работаю в локальном режиме, я делаю запрос и ответ веб-служб MDS без проблем. Но когда я публикую свое веб-приложение на другом сервере с помощью IIS(сервер B), у меня нет ответа от веб-службы.
На сервере B включена проверка подлинности windows для сайта, на котором размещается my App Web.
Сервер A, сервер B и моя машина принадлежат к одной интрасети.
Что я уже пробовал:
Это мой код на C#, с привязками и соединениями:
private static ServiceClient createMdsProxy(string mdsURL) / { EndpointAddress pntFinalAddress = new EndpointAddress(new Uri(mdsURL), EndpointIdentity.CreateUpnIdentity("@etnas.conts.net")); WSHttpBinding wsBinding = new WSHttpBinding(); wsBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; wsBinding.Security.Mode = SecurityMode.Message; wsBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows; wsBinding.Security.Message.NegotiateServiceCredential = true; wsBinding.Security.Message.EstablishSecurityContext = true; wsBinding.MaxReceivedMessageSize = 2147483646; wsBinding.MaxBufferPoolSize = 2147483646; return new ServiceClient(wsBinding, pntFinalAddress); }
В рамках другого метода я вызываю метод createMdsProxy:
mdsproxy = createMdsProxy("http://arwdw20.etnas.conts.net:8001/service/Service.svc"); mdsProxy.ClientCredentials.Windows.ClientCredential.UserName = System.Threading.Thread.CurrentPrincipal.Identity.Name; //. //.Code to make the request using MDS Web Service Methods. //. EntityMembersGetResponse getResponse = mdsProxy.EntityMembersGet(getRequest);// Get the entity member information
Следующий код-Web.config Im, используемый на стороне клиента.
<configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IService"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows"/> </security> </binding> </basicHttpBinding> <wsHttpBinding> <binding name="WSHttpBinding_IService"/> </wsHttpBinding> </bindings> <client> <endpoint address="http://arwdw20.etnas.conts.net:8001/service/Service.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService" contract="IService" name="WSHttpBinding_IService"> <identity> <userPrincipalName value="DSSService@itnes.conts.net"/> </identity> </endpoint> <endpoint address="http://arwdw20.etnas.conts.net:8001/service/Service.svc/bhb" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="IService" name="BasicHttpBinding_IService"/> </client> </system.serviceModel> <system.web> <compilation debug="true"/> </system.web></configuration>
А этот файл является частью WSDL файла из веб сервиса MDS:
<wsdl:service name="Service"> <wsdl:port name="WSHttpBinding_IService" binding="tns:WSHttpBinding_IService"> <soap12:address location="http://arwdw20.etnas.conts.net:8001/service/Service.svc" /> <wsa10:EndpointReference> <wsa10:Address>http://arwdw20.etnas.conts.net:8001/service/Service.svc</wsa10:Address> <Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"> <Upn>DSSService@itnes.conts.net</Upn> </Identity> </wsa10:EndpointReference> </wsdl:port> <wsdl:port name="BasicHttpBinding_IService" binding="tns:BasicHttpBinding_IService"> <soap:address location="http://arwdw20.etnas.conts.net:8001/service/Service.svc/bhb" /> </wsdl:port> </wsdl:service>
Я надеюсь, что вы можете помочь мне решить эту проблему.
Большое вам спасибо!