我正在使用每个Rick Strahl's blog post的.svc文件的工厂属性来实现WCF服务的非web.config方法:
厂= “System.ServiceModel.Activation.WebScriptServiceHostFactory”
在本地,我在Visual Studio 2008中运行IIS7并没有问题,但是当我部署到我的Web服务器(当前正在运行IIS6)时,我在事件日志中收到身份验证错误:
例外: System.ServiceModel.ServiceActivationException: 服务 '/Services/ResourcesService.svc' 由于a无法激活 编译期间的异常。该 异常消息是:IIS指定 认证方案 “IntegratedWindowsAuthentication, 匿名',但只有绑定 支持一个规范 认证方案。有效 身份验证方案是Digest, 谈判,NTLM,基本或匿名。 更改IIS设置,以便只有一个 使用单一认证方案.. ---> System.InvalidOperationException:IIS指定的身份验证方案 “IntegratedWindowsAuthentication, 匿名',但只有绑定 支持一个规范 认证方案。有效 身份验证方案是Digest, 谈判,NTLM,基本或匿名。 更改IIS设置,以便只有一个 使用单一认证方案。 在 System.ServiceModel.Web.WebServiceHost.SetBindingCredentialBasedOnHostedEnvironment(ServiceEndpoint serviceEndpoint,AuthenticationSchemes supportedSchemes)at System.ServiceModel.Web.WebServiceHost.AddAutomaticWebHttpBindingEndpoints(ServiceHost的 主持人,IDictionary`2 implementedContracts,String multipleContractsErrorMessage)at System.ServiceModel.WebScriptServiceHost.OnOpening() 在 System.ServiceModel.Channels.CommunicationObject.Open(时间跨度 超时)at System.ServiceModel.Channels.CommunicationObject.Open() 在 System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(字符串 normalizedVirtualPath)at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(字符串 normalizedVirtualPath)
在做了一些谷歌搜索之后,我将项目中的.svc文件夹(在服务器上)上的身份验证设置更改为仅匿名身份验证,但它无效。我仍然在通话时遇到网络服务失败。 IIS7默认只有匿名。
我的web.config中没有任何服务条目(我根据这种模式剥离了它们)。
我正在使用一个nant脚本将网站部署到服务器,并在本地使用它来验证脚本没有导致问题。
这有任何已知问题吗? IIS 6无法处理?
答案 0 :(得分:5)
我收到了这个错误......
在IIS管理器中检查了我的网站属性,发现匿名和集成Windows身份验证都已勾选,因此未勾选集成,但仍然无效。
最终发现了一篇提到重新启动IIS的帖子......做到了这一点并且事情有效!!
答案 1 :(得分:0)
IIS 6和IIS 7之间在WCF方面的主要区别在于它们支持的绑定。例如,IIS 6支持basichttpbinding但不支持nettcpbinding。
另外需要注意的是,如果IIS 6配置为提供.svc文件,则安装最小的.net framework 3.0。