我有一个WCF服务,它使用Apache2.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/xml net与绑定的内容类型不匹配(text/xml;charset=utf-8)。如果使用自定义编码器,请确保正确地实现了IsContentTypeSupported方法。响应的前109个字节是:'<%@ ServiceHost Language="C#“Debug=”真“Service=”svcfiletest.Service1 CodeBehind="Service1.svc.cs"% >
当我通过浏览器访问服务时,它会下载文件,而不是显示服务描述。
当我使用
svcutilhttp://ipaddress/svcutil/Service1.svc?wsdl时,我得到以下消息: urlhttp://ipaddress/svctest/Service1.svc处的文档不被识别为已知的文档类型。来自每种已知类型的错误消息可能会帮助您解决问题:“XML”中的-Report是“名称不能以'%‘字符开头的,即hecadecimal值0x25。第1行,位置2。来自“WSDL文档”的-Report是“XML文档(1,2)中有一个错误”。-Name不能以'%‘字符(十六进制值0x25 )开头。第1行,位置2。
它似乎从Service1.svc获取文本:
<%@ ServiceHost Language="C#" Debug="true" Service="svcfiletest.Service1" CodeBehind="Service1.svc.cs" %>有什么帮助吗?
谢谢
发布于 2012-11-21 17:32:04
您是否也在/etc/httpd/conf/httpd.conf中的某个地方实际加载了模块?
您既需要Include /etc/apache2/mod_mono.conf (或者将它放在http.conf包含的配置目录中),也需要LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so
见单峰。
我的设置-手动启动mod-mono
我手动编译mono,这是我的mod_mono.conf:http://pastebin.com/qp8vxHQ7。您需要使用此设置手动启动mono服务器。
我在~/Sites/中查看了~/Sites/,Apache将其作为http://localhost/~Martin/。
然后,我在~/Sites目录中启动mono 4,如下所示:
mod-mono-server4 --port 9000 --applications /~martin/Service:Service --verbose这很好用。
我的设置-自动启动mod-mono
还测试了另一个设置:http://pastebin.com/tYWk3tC9。这使得apache可以启动mono。
https://stackoverflow.com/questions/13495559
复制相似问题