PoorChristmas Ответов: 0

Как настроить 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>



Я надеюсь, что вы можете помочь мне решить эту проблему.
Большое вам спасибо!

0 Ответов