1

好的,完全披露我是 IIS 和 WCF 的新手,所以我买了一本书并被卡住了。我可以在工作时在我的开发盒上开发,因为它是带有 IIS 7 的 Windows 7,但在家里使用 Windows 8 和 IIS 8 我相信有两个问题,我只是不知道哪个步骤可能导致问题。我正在使用 Visual Studio 2012 Professional 在 .NET 4.5 环境中开发这两种环境。

基本上我认为 IIS 设置错误,因为我正在关注一本名为“Windows Communication Foundation 4,Step be Step”的书 http://www.amazon.com/Windows-Communication-Foundation-Step-Microsoft/dp/0735645566

我按照设置说明进行操作,但它们在家里有点不同,我很好奇如何纠正这个错误:

"响应消息的内容类型 text/html; charset=utf-8 与绑定的内容类型 (text/xml; charset=utf-8) 不匹配。如果使用自定义编码器,请确保 IsContentTypeSupported 方法正确实施。响应的前 1024 个字节是:'"

此代码在我创建 WCF 服务库 Web 项目后发生,它引用实体框架模型。您创建了一个引用 Web 服务的控制台应用程序,它运行良好。您将该 Web 服务部署到 IIS 并更改配置文件以引用该位置,它仅在 Windows 8 机器上出现上述错误,Windows 7 运行良好。

我注意到我在设置中无法执行的两个步骤,并认为它们是罪魁祸首,但还不知道如何针对 Windows 8 进行调整。

  1. 从 VS 命令提示符:'aspnet_regiis -iru',这对于 IIS 8 根本不起作用。不知道打开 IIS 时设置哪些选项以设置 asp.net 操作的通用正常。- 我确实尝试进入 IIS 并在“身份验证”下打开匿名身份验证和 ASP.NET。仍然没有解决任何问题。

  2. 这本书附带了一个 sql 对象,该对象随后将两个用户注册到“Adventureworks”的数据库中。显然我在猜测,因为第 1 部分不起作用或由于 Windows 8 设置,这些用户不存在,因此无法注册。注册用户的代码是:

'CREATE USER [IIS APPPOOL\DefaultAppPool] FOR LOGIN [IIS APPPOOL\DefaultAppPool] GO EXEC sp_addrolemember N'db_owner', [IIS APPPOOL\DefaultAppPool] GO GO CREATE USER [IIS APPPOOL\ASP.NET v4.0] FOR LOGIN [IIS APPPOOL\ASP.NET v4.0] GO EXEC sp_addrolemember N'db_owner', [IIS APPPOOL\ASP.NET v4.0] GO'

  • 我知道 SQL 代码,但我知道他们试图引用的用户不存在,所以我可以通过 IIS 或通过控制面板添加它们吗?我不确定,所以我不知道 IIS,所以我想我应该先问一下。

非常感谢任何帮助,因为我知道这可能只是一个简单的方法。

4

1 回答 1

0

好吧,我想我明白了,但不是我希望的那样。看来我需要在 IIS 8 中使用匿名访问运行该服务。转到默认站点“禁用”ASP.NET 模拟下的“身份验证”。但是....由于某种原因,.NET 4.5 的 IIS8 和 WCF 选项在 Windows 8 中默认没有启用。所以我发现了这个:http://proq.blogspot.com/2012/09/wcf-on-iis- and-windows-8.html并启用它们。

奇怪的是,无论如何我知道在某些时候我将不得不在我的本地机器上注册 ASP.NET 用户来模仿服务器环境。但暂时匿名访问似乎有效。我很好奇如果 IIS 知道它有两个选择,而匿名是它失败的第一个原因?是否始终将最严格的策略作为接入点绑定的默认设置?我对 IIS 完全陌生,看来我将不得不学习它以及 WCF。

编辑:使用某些设置运行 VS 2012 时,请务必以管理员身份运行 VS,否则您可能也会遇到问题。

于 2013-04-17T14:43:09.353 回答