我的机器上运行了一个WCF服务,当我在调试模式下运行visual studio 2008时,它会被激活。在我尝试将新网站添加到IIS 7.5之前,一切正常。现在,当我在调试模式下启动客户端时......我收到了以下错误。
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 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IIS 7.5 Detailed Error - 500.24 - Internal Server Error</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-serif;background:#CBE1EF;}
code{margin:0;color:#006600;font-size:1.1em;font-weight:bold;}
.config_source code{font-size:.8em;color:#000000;}
pre{margin:0;font-size:1.4em;word-wrap:break-word;}
ul,ol{margin:10px 0 10px 40px;}
ul.first,ol.first{margin-top:5px;}
fieldset{padding:0 15px 10px 15px;}
.summary-container fieldset{padding-bottom:5px;margin-top:4px;}
legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;}
legend{color:#333333;padding:4px 15px 4px 10px;margin:4px 0 8px -12px;_margin-top:0px;
border-top:1px solid #EDEDED;border-left:1px solid #EDEDED;border-right:1px solid #969696;
border-bottom:1px solid #969696;background:#E7ECF0;font-weight:bold;'.
我不确定是什么导致这种情况,请你帮帮我吗?
以下是我的IIS 7.5配置.. 匿名身份验证=已启用 ASP.NET模拟:已启用 基本身份验证:已启用 表单身份验证:已启用 Windows身份验证:已启用
我正在从我的客户端配置文件中引用我的web服务,如下所示。 http://localhost:2336/Service.svc
请注意,此服务是我的项目的一部分,并未显式添加到IIS。当我的客户端以调试模式运行时,它会自动启动,而在web.config文件中,身份验证设置为
<authentication mode="None"/>
此外,我怀疑在安装Skype后这种情况开始发生,这与此有什么关系吗?
谢谢, -Mike
答案 0 :(得分:3)
我刚刚在工作中遇到了一个涉及此问题的错误(实际上得到了相同的输出)。问题是在应用程序以集成模式运行时启用了模拟。为了解决这个问题,我在服务的web.config中添加了以下内容:
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
</configuration>
这将绕过集成模式验证,它会检查“&lt; system.Web / httpHandlers&gt;和&lt; system.Web / httpModules&gt;部分以及模拟”source
答案 1 :(得分:0)
请按照以下步骤操作:
首先,确保使用IIS和ASP.NET(确切版本)正确注册WCF。 有关如何register WCF with IIS and ASP.NET。
其次,打开IIS并转到网站/虚拟目录的“高级设置”。在“高级设置”弹出窗口中,将“应用程序池”更改为“经典.NET AppPool”,然后单击“确定”。
要记住的重要一点是,我们的应用程序正在使用的应用程序池应该有两个重要的设置。 a)AppPool的托管流水线模式应设置为“经典”而不是“集成”。 b)AppPool的.NET Framework版本应与我们用于WCF服务的版本相同。
有了这两个设置,我们可以为我们的应用程序创建和使用新的AppPool,我们不需要特定于“Classic .NET AppPool”。