在MONO下实现WCF所遇到的问题
2012-11-27 08:48
281 查看
http://www.189works.com/article-41523-1.html
最近要在Linux上移植一套.net开发的B/S系统,首先需要部署一个WCF服务,系统选用CentOS,现用虚拟机测试,已安装mono
2.10.6,xsp2,mod_mono和httpd,一切部署,建立测试用的aspx页面,访问正常,xsp的测试网站也全部正常.
安装方法 http://www.cnblogs.com/aquilahkj/archive/2011/11/03/2234380.html#
编辑/etc/httpd/conf.d/mod_mono.conf
在下方加入 AddType application/x-asp-net .svc
这样mod_mono才会解析WCF的svc页面.
建立测试用的WCF程序放进服务器,输入地址访问服务svc页面,报500错误
Contract 'MyWcfApp.IService1' was not found in the
implemented contracts in this service host.
google很久也没有结果,测试服务在windows下正常访问,无任何问题,无论怎修改方法和特性标签也没用,折腾到最后,发现~~原来是编译版本的问题,在windows下使用了3.5的的framework编译,改为4.0就没有问题,原因应该是我们mod_mono.conf中,把MonoServerPath设置为mod-mono-server4,所以需要用4.0的框架编译.
用4.0编译后再次打开连接,返回soap错误
anyType
was already contained in the schema object table. Consider setting MONO_STRICT_MS_COMPLIANT to 'yes' to mimic MS implementation. Related schema item SourceUri
google了文章 http://archive.cnblogs.com/a/2113112/ 发现应该是环境变量的问题,需要设置环境变量MONO_STRICT_MS_COMPLIANT=yes
有两个方法解决:
1. 在WCF网站中新增Global.asax文件,修改代码如下
protected void Application_Start(object
sender, EventArgs e)
{
#if MONO
Environment.SetEnvironmentVariable("MONO_STRICT_MS_COMPLIANT", "yes");
#endif
}
2.修改/etc/rc.d/init.d/httpd
在末端添加如下代码:
MONO_STRICT_MS_COMPLIANT=yes
export MONO_STRICT_MS_COMPLIANT
httpd作为服务随系统启动时,加入该环境变量,并export
配置完成后,在windows编写测试客户端测试,能正常调用,但每次首次调用时连接时程序卡了10多秒,之后请求就很快了,不知原因为何,还望指点,另外如果我在服务端抛出异常时,客户端就报一下错误
Addressing Version 'AddressingNone (http://schemas.microsoft.com/ws/2005/05/addressing/none)'
does not support adding WS-Addressing headers.
不会报我服务器实际的异常错误.也找不到解决方法,但当把客户端部署在CentOS直接调用访问服务端时,连接只卡了1秒多,并且也能抛出真正异常.估计是mono生成的SOAP请求问题吧.
最近要在Linux上移植一套.net开发的B/S系统,首先需要部署一个WCF服务,系统选用CentOS,现用虚拟机测试,已安装mono
2.10.6,xsp2,mod_mono和httpd,一切部署,建立测试用的aspx页面,访问正常,xsp的测试网站也全部正常.
安装方法 http://www.cnblogs.com/aquilahkj/archive/2011/11/03/2234380.html#
编辑/etc/httpd/conf.d/mod_mono.conf
在下方加入 AddType application/x-asp-net .svc
这样mod_mono才会解析WCF的svc页面.
建立测试用的WCF程序放进服务器,输入地址访问服务svc页面,报500错误
Contract 'MyWcfApp.IService1' was not found in the
implemented contracts in this service host.
google很久也没有结果,测试服务在windows下正常访问,无任何问题,无论怎修改方法和特性标签也没用,折腾到最后,发现~~原来是编译版本的问题,在windows下使用了3.5的的framework编译,改为4.0就没有问题,原因应该是我们mod_mono.conf中,把MonoServerPath设置为mod-mono-server4,所以需要用4.0的框架编译.
用4.0编译后再次打开连接,返回soap错误
anyType
was already contained in the schema object table. Consider setting MONO_STRICT_MS_COMPLIANT to 'yes' to mimic MS implementation. Related schema item SourceUri
google了文章 http://archive.cnblogs.com/a/2113112/ 发现应该是环境变量的问题,需要设置环境变量MONO_STRICT_MS_COMPLIANT=yes
有两个方法解决:
1. 在WCF网站中新增Global.asax文件,修改代码如下
protected void Application_Start(object
sender, EventArgs e)
{
#if MONO
Environment.SetEnvironmentVariable("MONO_STRICT_MS_COMPLIANT", "yes");
#endif
}
2.修改/etc/rc.d/init.d/httpd
在末端添加如下代码:
MONO_STRICT_MS_COMPLIANT=yes
export MONO_STRICT_MS_COMPLIANT
httpd作为服务随系统启动时,加入该环境变量,并export
配置完成后,在windows编写测试客户端测试,能正常调用,但每次首次调用时连接时程序卡了10多秒,之后请求就很快了,不知原因为何,还望指点,另外如果我在服务端抛出异常时,客户端就报一下错误
Addressing Version 'AddressingNone (http://schemas.microsoft.com/ws/2005/05/addressing/none)'
does not support adding WS-Addressing headers.
不会报我服务器实际的异常错误.也找不到解决方法,但当把客户端部署在CentOS直接调用访问服务端时,连接只卡了1秒多,并且也能抛出真正异常.估计是mono生成的SOAP请求问题吧.
相关文章推荐
- 在MONO下实现WCF所遇到的问题
- .NET : 在实现WCF的双工服务时可能遇到的问题
- .NET : 在实现WCF的双工服务时可能遇到的问题
- WCF置于Mono下遇到的一些问题
- Asmact实现IM客户端所遇到的问题及解决方案
- hive 实现 udf row_number 以及遇到的问题
- 处理JSP中文跨页面间传参乱码的问题有两种方法实现方法(每个搞JSP的最常遇到的问题之一) 实例版:)
- 使用Spring MVC 实现文件上传遇到的问题以及解决方案
- python3实现《机器学习实战》遇到的问题:range函数
- Mono for Android 初学遇到的问题
- 在Visual studio 2013环境中通过ODBC实现数据库互连时遇到的问题
- DeskBand实现之——遇到的问题
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
- 一个sio.c的实现及遇到的多任务执行问题
- [Django]我的第一个网页,报错啦~(自己实现过程中遇到问题以及解决办法)
- 利用mui实现开发web页遇到问题
- C#(Mono)开发手机及平板应用入门篇(含WCF服务实现)
- 微信公众号模板消息实现------遇到问题Token为null,报空指针
- 通过类库来实现多窗体windows程序遇到了些问题,请大家有空帮忙看一下,谢谢
- [Silverlight学习笔记]实现上传图片功能时遇到的问题