我正在使用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身份验证)。
一如既往,谢谢!
答案 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 - 这可能会立即解决大量问题并让您更好地控制托管。