在MONO下實現WCF所遇到的問題

來源:互聯網
上載者:User

最近要在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請求問題吧.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.