我有一个 MonoTouch 项目,它使用了一些与 Windows Phone 7 应用程序共享的代码。此共享代码为使用 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 版本的限制?