2016-09-07 11 views
0

ChannelFactoryを使用してWCFサービスを呼び出しています。channelfactoryを介してWCF webserviceを呼び出す際のエラー - 許可されていません

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'.

私の呼び出しコード

var myBinding = new BasicHttpBinding(); 
var myEndpoint = new EndpointAddress(webserviceAddress); 
var myChannelFactory = new ChannelFactory<IObjectService>(myBinding, myEndpoint); 
var serviceClient = myChannelFactory.CreateChannel(); 

私のWCFサービスのweb.config system.servicemodelセクション

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <basicHttpBinding> 
     <binding> 
      <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Windows"/> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <protocolMapping> 
     <add binding="basicHttpsBinding" scheme="https" /> 
    </protocolMapping> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0" /> 
    </system.serviceModel> 

サービスはWindows認証に基づいて認証する必要があります。しかし、私はエラーを取得します。私は既定では、上記の呼び出しコードはWindows認証を使用して、コードが実行されているアカウント(サービスアカウント)を渡しますが、匿名を送信しているように思われます。

+0

サービスはIISでホストされていますか?匿名認証は無効になっていますか? – Tim

答えて

0

メッセージ資格情報でトランスポートするモードを設定する必要があります次のコードに示すように、:代替として

var myBinding = new BasicHttpBinding(); 
myBinding.Security.Mode = SecurityMode.TransportCredentialOnly; 

は、結合のコンストラクタにモードを設定することができる:

var myBinding = new BasicHttpBinding(SecurityMode.TransportCredentialOnly); 

もClientCredentialを設定:

myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; 
+0

ありがとう、それは助けた。このメッセージの資格情報オプションは、私が持っていないHTTPSのみですが、HTTPだけです。私はTransportCredentialOnlyを試みましたが、たとえTransportCredentialOnlyが私のweb.configにあるものの、バインディング間の不一致がありますか? – NZJames

+0

あなたが正しいです、私はSecurity.Modeに関して間違いを犯しました。私は私の答えを更新しました。エラーメッセージ全体を投稿してください。 –

関連する問題