0

CentOSでmod_monoを使用して、Apache2.2.15でホストされているbasicHttpBindingを使用するWCFサービスがあります。/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"%>

ブラウザからサービスにアクセスすると、サービスの説明が表示される代わりにファイルがダウンロードされます。

svcutilhttp://ipaddress/svcutil/Service1.svc?wsdlを使用すると、次のメッセージが表示されます。

URLのドキュメントhttp://ipaddress/svctest/Service1.svcが既知のドキュメントタイプとして認識されませんでした。既知の各タイプからのエラーメッセージは、問題の修正に役立つ場合があります。-「XMLスキーマ」からのレポートは「名前は「%」文字で開始できません。16値は0x25です。行1、位置2。-「WSDLドキュメント」からのレポートは「XMLドキュメント(1,2)にエラーがあります。」です。-名前を「%」文字で始めることはできません。16進値は0x25です。行1、位置2。

Service1.svcからテキストを取得しているようです。

<%@ ServiceHost Language="C#" Debug="true" Service="svcfiletest.Service1" CodeBehind="Service1.svc.cs" %>

何か助けはありますか?

ありがとう

4

1 に答える 1

0

また、実際にモジュールをどこかにロードしました/etc/httpd/conf/httpd.confか?

Include /etc/apache2/mod_mono.conf(またはに含まれているconfigディレクトリに配置する)http.confLoadModule 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/、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を開始できます。

于 2012-11-21T17:32:04.237 に答える