在共享Web主机上托管WCF数据服务的IIS错误

时间:2010-10-16 20:33:38

标签: .net wcf configuration wcf-data-services

我的客户在共享的Web服务器上托管了一个网站。我无法访问IIS。我正在尝试将WCF数据服务部署到他的网站上。我收到了这个错误:

  

IIS指定的身份验证方案“IntegratedWindowsAuthentication,Anonymous”,但绑定仅支持一种身份验证方案的规范。有效的身份验证方案是Digest,Negotiate,NTLM,Basic或Anonymous。更改IIS设置,以便仅使用单个身份验证方案。

我搜索了SO和其他网站相当多但似乎无法找到具有我确切情况的人。我无法更改IIS设置,因为这是第三方的服务器,它是共享的Web服务器。所以我唯一的选择是改变代码或服务配置中的内容。我的服务配置如下所示:

<system.serviceModel xdt:Transform="Insert">
  <serviceHostingEnvironment>
    <baseAddressPrefixFilters>
      <add prefix="http://www.somewebsite.com"/>
    </baseAddressPrefixFilters>
  </serviceHostingEnvironment>
  <bindings>
    <webHttpBinding>
      <binding name="{Binding Name}" >
        <security mode="None" />
      </binding>
    </webHttpBinding>
  </bindings>
  <services>
    <service name="{Namespace to Service}">
      <endpoint address="" binding="webHttpBinding" bindingConfiguration="{Binding Name}" contract="System.Data.Services.IRequestHandler">
      </endpoint>
    </service>
  </services>
</system.serviceModel>

正如您所看到的,我尝试将安全模式设置为“无”,但这似乎没有帮助。我应该更改什么来解决此错误?

1 个答案:

答案 0 :(得分:0)

我对此不太确定,但是从阅读this文章开始,我认为您无法直接从配置中将身份验证设置为无。

Windows身份验证设置是通过IIS进行的。

在调用任何数据之前,您是否尝试在代码中执行此操作:

MyDataContext ctx = new MyDataContext(uri); 
ctx.Credentials = System.Net.CredentialCache.DefaultCredentials;  
ctx.Credentials = new NetworkCredential( 
    "username", 
    "password", 
    "domain");

当然,您必须拥有用户名,密码和域名。

希望有帮助=)