【问题标题】:WCF Hosted on IIS6WCF 托管在 IIS6 上
【发布时间】:2011-07-22 20:53:31
【问题描述】:

我试图阻止允许匿名访问我的 WCF 服务,但是我不断收到错误消息“此服务的安全设置需要‘匿名’身份验证,但托管此服务的 IIS 应用程序未启用它。”

我尝试了各种想法,例如删除 mex 端点并将安全模式设置为仅传输凭据,但这不起作用。

配置:

我的应用程序池身份配置为位于我的域中的网络帐户, 我的网站未勾选匿名访问并勾选了集成 Windows 身份验证。 我的服务配置是:

<services>      
  <service behaviorConfiguration="CRMDataDashboard_Service.CoreServiceBehavior"
    name="CRMDataDashboard_Service.CoreService">
    <endpoint address="http://crmb1:8900/CoreService.svc" binding="basicHttpBinding" contract="CRMDataDashboard_Service.ICoreService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
   </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="CRMDataDashboard_Service.Service1Behavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    <behavior name="CRMDataDashboard_Service.ChartDataBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    <behavior name="CRMDataDashboard_Service.DataDashboardServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    <behavior name="CRMDataDashboard_Service.CoreServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

对此的任何帮助将不胜感激

【问题讨论】:

    标签: wcf iis


    【解决方案1】:

    你在使用 basicHttpBinding 吗?

    这个答案可能会有所帮助: IIS hosted WCF-service + Windows auth in IIS + TransportCredentialOnly/Windows auth in basicHttpBinding

    【讨论】:

    【解决方案2】:

    您需要在配置中创建一个绑定,将 Windows 身份验证定义为传输安全:

    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpEndpointBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    

    看看here


    更新

    你需要把上面的代码放在&lt;system.serviceModel&gt;下面。您还需要指向配置中的绑定(在bindingConfiguration 中使用BasicHttpEndpointBinding,因为这是我们定义的绑定):

    <endpoint address="http://crmb1:8900/CoreService.svc" binding="basicHttpBinding" contract="CRMDataDashboard_Service.ICoreService" bindingConfiguration="BasicHttpEndpointBinding">
      <identity>
    

    【讨论】:

    • 配置中的哪个位置?
    • 我有它,但它仍然传递同样的错误。 - 配置中还有什么我需要的,即集成安全 = True 等。
    • 把你的新绑定放在这里。并阅读我发送的链接,确保您已完成所有操作。
    • 检查了链接 - 这是我的绑定
    • 我的服务 - crmb1:8900/CoreService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpEndpointBinding" name= "BasicHttpEndpoint" contract="CRMDataDashboard_Service.ICoreService"> 服务>
    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 2010-10-01
    • 2010-09-25
    • 2010-11-26
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多