我的客户在共享的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>
正如您所看到的,我尝试将安全模式设置为“无”,但这似乎没有帮助。我应该更改什么来解决此错误?
答案 0 :(得分:0)
我对此不太确定,但是从阅读this文章开始,我认为您无法直接从配置中将身份验证设置为无。
Windows身份验证设置是通过IIS进行的。
在调用任何数据之前,您是否尝试在代码中执行此操作:
MyDataContext ctx = new MyDataContext(uri);
ctx.Credentials = System.Net.CredentialCache.DefaultCredentials;
ctx.Credentials = new NetworkCredential(
"username",
"password",
"domain");
当然,您必须拥有用户名,密码和域名。
希望有帮助=)