2

非常に単純なWCFサービスがあり、単一のメソッドGetDateTime()があり、Windows 7のIISでホストされています。すべて、Windows環境で正常に機能しているようです。テストクライアントアプリケーションを使用して実行できます。

MonoTouchを使用している私のMacで、サービスにWeb参照を追加しました。これにより、サービスが検出され、大量のファイルが生成されます。

Monoプロジェクトをコンパイルすると、生成されたReference.csファイルにエラーがあります。

インターフェイスのGetDateTimeメソッドは、System.DateTimeではなく戻り型GetDateTimeResponseで宣言されています。

何がうまくいかなかったのか、これはバグですか、それとも私は何かを見逃しましたか?

[System.ServiceModel.ServiceContractAttribute(Namespace="LastPrice.win7pro")]
public interface ITest {

    [System.ServiceModel.XmlSerializerFormatAttribute()]
    [System.ServiceModel.OperationContractAttribute(Action="http://win7pro/ITest/GetDateTime", ReplyAction="http://win7pro/ITest/GetDateTimeResponse")]
    GetDateTimeResponse GetDateTime(GetDateTime GetDateTime);

    [System.ServiceModel.XmlSerializerFormatAttribute()]
    [System.ServiceModel.OperationContractAttribute(Action="http://win7pro/ITest/GetDateTime", ReplyAction="http://win7pro/ITest/GetDateTimeResponse", AsyncPattern=true)]
    System.IAsyncResult BeginGetDateTime(GetDateTime GetDateTime, System.AsyncCallback asyncCallback, object userState);

    GetDateTimeResponse EndGetDateTime(System.IAsyncResult result);
}
4

1 に答える 1

1

これは、Mono の WSDL 生成のバグです。

Visual Studio 2012 Web Express を使用して、このための簡単なテスト ケースを作成しました。Windows マシンから Reference.cs ファイルをコピーすると、正常に動作します。

これは現在、モノ/マスター コミット aa2e9ecで修正されています。

このバグは、複雑な戻り値の型を持つすべてのパラメーターなしのサービス メソッドに影響します。

一時的な回避策として、SlSvcUtil.exeWindows で を使用してクライアント プロキシを作成するか、サービス メソッドにダミー パラメータを追加します。

于 2012-10-01T08:34:32.087 に答える