我一直在尝试使用 MSDN here提供的 WCF 示例来感受使用 WCF。不幸的是,我什至无法运行最基本的 WCF 示例,它(按照安装步骤后)可以在“C:\WF_WCF_Samples\WCF\Basic\GettingStarted”中找到。我没有修改 WCF 安装程序生成的示例代码。
当我运行该服务时,我收到以下错误:
An unhandled exception of type 'System.ServiceModel.ProtocolException' occurred in mscorlib.dll
Additional information: The content type text/html; charset=utf-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were: '<!DOCTYPE html>
<html>
<head>
<title>Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.</title>
<meta name="viewport" content="width=device-width" />
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable {'.
如果我正确解释,这意味着该服务正在返回 html 格式的内容而不是 xml 格式的数据。
在互联网上搜索后,我发现了一个堆栈溢出线程(现在无法找到链接),它说问题可能与托管服务的用户“网络服务”缺乏权限有关并且不能修改“C:\inetpub\wwwroot\”文件夹。当我尝试更改权限时,遇到以下错误:
An error occured while applying security information to:
C:\inetpub\wwwroot\msmq
Failed to enumerate objects in the container. Access is denied.
我还尝试通过以下命令通过开发人员命令提示符(使用我找到的命令)更改权限:
C:\Program Files (x86)\Microsoft Visual Studio 11.0>icacls %systemdrive%\inetpub
/grant %userdomain%\%username%:(OI)(CI)(F) /grant %userdomain%\%username%:F
C:\inetpub: Access is denied.
Successfully processed 0 files; Failed processing 1 files
C:\Program Files (x86)\Microsoft Visual Studio 11.0>
尽管如上所述,这显然行不通。
我还尝试了这个相关的 Stack Overflow 问题中提供的解决方案,但无济于事。
我希望能够运行示例(希望将来能够运行我自己的服务)。我应该采取什么步骤来实现这一点?我几乎没有 WCF 或服务器开发的经验,因此我完全有可能在设置服务时犯了一个“微不足道”的错误。
最后,我在 Windows 8 Pro 中使用 VS 2012,如果这会影响任何事情。我在调试模式下运行了示例。
如有必要,我可以从服务中发布示例代码。