使用WebScriptServiceHostFactory的WCF Web服务

时间:2010-02-26 16:53:12

标签: asp.net wcf

我正在使用WCF启动一个新项目,以便我可以使用jQuery对服务器进行AJAX调用。我在过去配置WCF时遇到了各种各样的问题,所以我决定做一些新的研究,看看VB中WCF的文档级别是否有所改进。不幸的是,对我来说,WCF文档仍然像它作为CTP一样发布时的云端......

但是我重新发现了WebScriptServiceHostFactory并决定尝试一下。根据我从几个来源收集的内容,我应该能够在我的.svc文件中使用WebScriptServiceHostFactory,而不必担心尝试通过ABC的WCF(Pun意图)。

我构建了一个连接到SQL Server并通过LinqToSql并返回数据集的项目。我包含了WebScriptServiceHostFactory,并且还添加了

 <system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
 </system.serviceModel>

到web.config。但是,当我运行它时,我得到了可怕的“此服务的安全设置需要'匿名'身份验证,但它没有为承载此服务的IIS应用程序启用”错误消息在我第一次开始使用WCF时困扰了我。

我重写了函数只是返回一个字符串而不是连接到数据库等,只是为了看它是否可行,但我得到了相同的东西。

所以问题是,除了将工厂添加到.svc文件和之前提到的web.config的serviceHostingEnviroment选项之外,我做错了什么???

我试过检查&amp;取消选中IIS中的目录安全性选项卡中的“启用匿名访问”。 (我已选中集成Windows和摘要Windows身份验证)。

一如既往,谢谢!

1 个答案:

答案 0 :(得分:1)

这些文章和博客文章可能对您有所帮助:

同样对于您的IIS托管问题,Dominick Baier在Hosting WCF Services in ASP.NET - The Survival Guide中写道:

  

IIS身份验证设置
  我注意到的另一件事是,WCF需要   启用匿名身份验证   IIS中的.svc文件(无论如何   WCF身份验证设置)。如果你   将.svc文件放入现有文件中   使用Windows的ASP.NET应用程序   身份验证您将看到此错误   消息:

     

“此服务的安全设置   需要'匿名'身份验证但是   它没有启用IIS   承载此服务的应用程序。“

     

您必须单独启用   .svc文件的匿名访问权限   让它发挥作用。

因此,您可以遵循这种做法,或者您也可以选择自行托管WCF服务而不是依赖IIS - 这可能会立即解决大量问题并让您更好地控制托管。