在.svc上具有Factory属性的WCF服务在Web服务器(IIS6)上不起作用,但在本地使用IIS7?

时间:2009-10-02 13:32:03

标签: wcf iis-7 iis-6

我正在使用每个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无法处理?

2 个答案:

答案 0 :(得分:5)

我收到了这个错误......

在IIS管理器中检查了我的网站属性,发现匿名和集成Windows身份验证都已勾选,因此未勾选集成,但仍然无效。

最终发现了一篇提到重新启动IIS的帖子......做到了这一点并且事情有效!!

答案 1 :(得分:0)

IIS 6和IIS 7之间在WCF方面的主要区别在于它们支持的绑定。例如,IIS 6支持basichttpbinding但不支持nettcpbinding。

另外需要注意的是,如果IIS 6配置为提供.svc文件,则安装最小的.net framework 3.0。