1

外部ソースから受信したデータのプロパゲーターとして機能する Windows サービスがあります。この Windows サービスは、WCFServiceHostをホストしNetNamedPipeBinding()ます。ServiceContractも定義するCallbackContract

サーバーを消費し、解析されたデータをイベントとしてバブルアップするクライアント DLL コンポーネントもあります。サーバーからコールバックを受信すると、データがバブルされます。

コードはデスクトップ アプリで動作しますが、WinRT アプリでクライアント DLL を参照しようとすると、次のエラーが発生します。

The pipe name could not be obtained for the pipe URI: Access is denied. (5, 0x5)

これは、(私の知る限り) WinRT が名前付きパイプをサポートしていないためだと思います。

WinRT でそのようなサービスを利用するにはどうすればよいですか? WCF側を任意の要件に変更できますが、Windowsサービスとしてホストする必要があります(WinRTコンシューマーはありません)。通信は常に同じマシン内で行われます。ポーリングは最後の手段です。

4

2 に答える 2

0

basicHttpBindingnet.namedpipe はサポートされていないため、最初に に切り替える必要があります。

実際にサポートされているのは、BasicHttpBinding、NetTcpBinding、NetHttpBinding です。

次に、WinRT には、ネットワーク スタック経由でlocalhostにアクセスできないようにするポリシーが用意されています。

このセキュリティ ポリシーを克服するには、アプリに LoopbackExempt を追加する必要があります。

CheckNetIsolation.exe LoopbackExempt -s

MSDN の詳細を参照してください: http://msdn.microsoft.com/en-us/library/windows/apps/Hh780593.aspx

双方向の場合、POLLING はオプションです (アプリがフォーカスされている場合にのみ機能します)。

またはプッシュ通知を使用する: http://blogs.msdn.com/b/jimoneil/archive/2012/10/15/windows-8-notifications-push-notifications.aspx

于 2012-12-12T21:50:33.900 に答える
0

HttpClient クラスを使用してください。これが唯一の簡単な回避策であり、同様に機能します。

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));
httpClient.DefaultRequestHeaders.Add("SOAPAction", "http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP");
var soapXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><GetCityWeatherByZIP xmlns=\"http://ws.cdyne.com/WeatherWS/\"><ZIP>23454</ZIP></GetCityWeatherByZIP></soap:Body></soap:Envelope>";
var response = httpClient.PostAsync("http://wsf.cdyne.com/WeatherWS/Weather.asmx", new StringContent(soapXml, Encoding.UTF8, "text/xml")).Result;
var content = response.Content.ReadAsStringAsync().Result;

これを試して?これがあなたが探しているものであることを願っています - https://quirkd.wordpress.com/2015/01/24/shorts-using-a-wcf-asmx-web-service-in-winrt/

于 2015-02-11T06:11:14.070 に答える