2012-04-28 127 views
2

IIS 7を使用してイントラネットで実行されており、IISマネージャーで匿名認証を有効にするたびに正常に動作します。私はそれを無効にし、wcftestclientを使用して、それを実行しようとすると、私は次のエラーを取得する、WCF - メタデータを取得できません

Error: Cannot obtain Metadata from http://myserver/testing/eval.svc If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://myserver/testing/eval.svc Metadata contains a reference that cannot be resolved: 'http://myserver/testing/eval.svc'. The HTTP request is unauthorized with client authentication scheme 'Anonymous'. 

あなたは、私が「見ることができるようにこれは私のweb.configファイル、

<system.serviceModel> 
<bindings> 
    <wsHttpBinding> 
     <binding name="Binding1"> 
      <security mode="Transport"> 
       <transport clientCredentialType="Windows" /> 
       <message establishSecurityContext="true" /> 
      </security> 
     </binding> 
    </wsHttpBinding> 
    <basicHttpBinding> 
     <binding name="httpBinding"> 
      <security mode="Transport"> 
       <transport clientCredentialType="Windows" /> 
      </security> 
     </binding> 
    </basicHttpBinding>  
</bindings> 

<services> 
    <service behaviorConfiguration="ServiceBehavior" name="EvalServiceLibrary.EvalService"> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="EvalServiceLibrary.IEvalService"> 
     <identity> 
     <dns value="myserver.mydomain.com" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <endpoint address="basic" binding="basicHttpBinding" contract="EvalServiceLibrary.IEvalService" /> 
    </service> 
</services> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpGetEnabled="true" /> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

ですmxHttpBindingエンドポイントを使用してメタデータを入力します。だから、どんなアドバイスも大歓迎です。

ありがとう、 m0dest0。

答えて

5

MEXエンドポイントを削除しておきます。 Mexエンドポイントでは、匿名認証を有効にする必要があります。

3

ハビは正しかった、私は、MEXのエンドポイントを削除する必要がありましたし、ちょうどレコードについて、これは、web.configファイルの最終版である:ここ

<system.serviceModel> 
<bindings> 
    <basicHttpBinding> 
     <binding name="basicBinding"> 
      <security mode="TransportCredentialOnly"> 
       <transport clientCredentialType="Windows" /> 
      </security> 
     </binding> 
    </basicHttpBinding> 
</bindings> 
<services> 
    <service name="EvalServiceLibrary.EvalService" behaviorConfiguration="ServiceBehavior"> 
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicBinding" contract="EvalServiceLibrary.IEvalService"> 
     </endpoint> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
     <behavior name="ServiceBehavior"> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceMetadata httpGetEnabled="false" /> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 

詳細は、 IIS hosted WCF-service + Windows auth in IIS + TransportCredentialOnly/Windows auth in basicHttpBinding

関連する問題