1

WindowsPhone7アプリと共有するコードを使用したMonoTouchプロジェクトがあります。この共有コードは、SLSvcUtil.exeを使用して生成されたRIAドメインサービス(/ Soapエンドポイントを使用)のWCFプロキシを作成します。コードは次のようになります。

BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://someurl/someservice.svc");

var client = new MyDomainServiceSoapClient(binding, address);
client.CookieContainer = _cookieContainer; // <-- EXCEPTION here

このコードはWP7で機能しますが、MonoTouchでは失敗し、理由がわかりません。私がMonoTouchで得る例外は次のとおりです。

System.InvalidOperationException: Unable to set the CookieContainer.
Please make sure the binding contains an HttpCookieContainerBindingElement.
    at MyDomainServiceSoapClient.set_CookieContainer

CookieContainerを設定する前に次のオプションを試しましたが、それでも同じエラーが発生します。

binding.EnableHttpCookieContainer = true;
binding.AllowCookies = true;
binding.CreateBindingElements()
    .Add(new HttpCookieContainerBindingElement()); // ??

更新:CustomBindingを手動で作成し、HttpCookieContainerBindingElementを追加しようとしましたが、これも機能しません。

何か案は?MonoTouchサイトによると、WCFの実装は「実験的」であるとのことですが、これは現在のバージョンのMonoTouchの制限でしょうか。

4

2 に答える 2

0

これは Mono フレームワークのバグであることが判明しました。MonoTouch 4.0.1 の時点で、これは解決されているため、上記のコードは問題なく使用できます。

于 2011-05-14T10:45:47.767 に答える
0

Monotouch で SLSvcUtil.exe をプロキシ ジェネレータとして使用している場合はどうなるかわかりませんが、Silverlight は WP7 ネイティブであるため、常に Silverlight と組み合わせて使用​​していました。

MT では、おそらく MT の方法で行う必要があります。MonoDevelop を開き、そこからサービスへの参照を追加して、Silverlight サービス プロキシ用に生成されたコードではなく、Mono フレームワークとその WCF プロキシ実装を使用して作成されるようにします。

少なくとも、これは私にとってはうまくいき、基本的な HTTP バインディングを使用する WCF サービスではうまくいきます。

于 2011-03-24T20:54:15.050 に答える