【问题标题】:Cannot access WCF service hosted in Apache with mod-mono无法使用 mod-mono 访问托管在 Apache 中的 WCF 服务
【发布时间】:2012-11-21 14:36:57
【问题描述】:

我有一个 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 个字节是:'

当我通过浏览器访问服务时,它会下载文件而不是显示服务描述。

当我使用svcutilhttp://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" %>

有什么帮助吗?

谢谢

【问题讨论】:

    标签: wcf apache mono mod-mono


    【解决方案1】:

    您是否也确实在 /etc/httpd/conf/httpd.conf 的某个位置加载了该模块?

    您需要Include /etc/apache2/mod_mono.conf(或将其放入您的http.conf 包含的配置目录中)和LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so

    http://www.mono-project.com/Mod_mono

    我的设置 - 手动启动 mod-mono

    我手动编译了 mod-mono,这是我的 mod_mono.conf:http://pastebin.com/qp8vxHQ7。您需要使用此设置手动启动 mod-mono-server。

    我在~/Sites/ 中签出了this module,apache 将其选为http://localhost/~Martin/

    然后,我在 ~/Sites 目录中启动 mod-mono-server4,如下所示:

        mod-mono-server4 --port 9000 --applications /~martin/Service:Service --verbose
    

    这工作正常。

    我的设置 - 自动启动 mod-mono

    还测试了另一种设置:http://pastebin.com/tYWk3tC9。这让 apache 启动 mod-mono。

    【讨论】:

    • 我有“包括 conf.d/*.conf”,在 /etc/httpd/conf.d 里面我有 mod-mono.conf。在 mono.conf 我有“ LoadModule mono_module /usr/lib64/httpd/modules/mod_mono.so ”。我能够使用 mod-mono-server2 在我的 Windows 浏览器中打开 mod_mono 附带的测试项目。但是对于带有 mod-mono-server4 的 WCF 服务,它不起作用。
    • 嗯,我刚试过,我不得不将 AddType application/x-asp-net .svc 添加到 mod-mono.conf
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多