我有一个 WCF 服务,使用托管在 Apache 2.2.15 中的 basicHttpBinding,在 CentOS 中使用 mod_mono。我在 /etc/httpd/conf/httpd.conf 的末尾添加了以下指令以启用 WCF 服务:
MonoServerPath default /usr/bin/mod-mono-server4
AddType application/x-asp-net .svc
当我尝试从 Windows 中的客户端调用服务中的操作时:
BasicHttpBinding binding = new BasicHttpBinding();
IService1 service1 = ChannelFactory<IService1>.CreateChannel(binding, new EndpointAddress(new Uri(`"http://ipaddress/svctest/Service1.svc"`)));
string test= service1.GetData(1);
抛出以下异常:
ProtocolException 未处理:响应消息的内容类型 application/x-asp-net 与绑定的内容类型不匹配 (text/xml; charset=utf-8)。如果使用自定义编码器,请确保正确实现 IsContentTypeSupported 方法。响应的前 109 个字节是:'<%@ ServiceHost Language="C#" Debug="true" Service="svcfiletest.Service1" CodeBehind="Service1.svc.cs"% >
当我通过浏览器访问服务时,它会下载文件而不是显示服务描述。
当我使用
svcutil
http://ipaddress/svcutil/Service1.svc?wsdl 时,我收到以下消息:url 处的文档
http://ipaddress/svctest/Service1.svc
未被识别为已知文档类型。来自每种已知类型的错误消息可能会帮助您解决问题: - 来自“XML 架构”的报告是“名称不能以 '%' 字符开头,十六进制值 0x25。第 1 行,位置 2。'。- 来自“WSDL 文档”的报告是“XML 文档 (1,2) 中存在错误。”。-名称不能以'%'字符开头,十六进制值0x25。第 1 行,位置 2。
似乎它从 Service1.svc 获取文本:
<%@ ServiceHost Language="C#" Debug="true" Service="svcfiletest.Service1" CodeBehind="Service1.svc.cs" %>
有什么帮助吗?
谢谢