問題タブ [netnamedpipebinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - NetNamedPipeBinding: パイプ メソッドのパラメーターが空です
NetNamedPipeBinding エンドポイントでリッスンする ServiceHost があります。クライアントによって呼び出され、サーバーによって処理される単一のメソッドを持つサービス コントラクト クラスがあります。メソッド (PipeRequest() と呼びます) には Request パラメータがあります。クライアント側では、このオブジェクトにデータを入力しますが、サーバーに送信されるまでは空です。なぜこれが当てはまるのでしょうか?
wcf - net.pipe例外でリッスンしているエンドポイントはありません
多くのWCFサービスがあり、あるサービスを別のサービスから呼び出す必要があります。私はnetNamedPipeBinding
この目的のために使用することにしました。
私のweb.configファイルは次のようになります。(私はここに無関係なものをコピーしていません。)
web.configファイルのclientセクションは次のようになります。
私はOperationContract
次のようにs(GetDetails)の1つを呼び出そうとしています:
このコードを実行すると、OperationContractGetDetailsを呼び出した行で例外が発生します。
メッセージを受け入れることができるnet.pipe://localhost/TestSite/AuthorizationService.svcでリッスンしているエンドポイントはありませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。
正確な問題を見つけることができません。InnerExceptionもありません。私はWindows7マシンを使用しており、IISのバージョンはIIS7.5です。Winformアプリケーションから問題なくこのサービスを呼び出すことができることに注意してください。net.pipeバインディングは、IISのWebサイトバインディングに追加されます。
net.pipeトランスポートを使用してサービスが正しく機能していることを確認するにはどうすればよいですか?HTTPの場合、IEで参照して確認できます。
c# - WCF と NetNamedPipeBinding - AVG アンチウイルス
当社のアプリケーションについて、AVG アンチウイルスから警告を受けているお客様がいます。
このアプリケーションは、クロスプロセス通信のためだけに、C# で WCF を使用して標準の NetNamedPipeBinding を開きます。
これは何らかの方法で回避できますか? WCF サービスがマシンに対してのみローカルであることを示すために設定する必要があるものがあるかどうか疑問に思っています。
今は、C# で次のようにバインディングをセットアップするだけです。
他の重要な設定はServiceHost.AddServiceEndpoint
見当たりません。「net.pipe://localhost/OurEndpoint」のようなアドレスで呼び出してバインディングを設定するだけです。
AVG はがらくたの一部であることをお客様にお伝えしたいと思います。フロッピー ドライブにうさぎの足を入れた方がよいのですが、私の良心はそうさせません。
c# - サービスと複数のユーザーアプリケーション間の内部通信WCFC#
私は現在、LocalSystemとして実行されているサービスと、ログオンしているユーザーごとに実行されているユーザーアプリケーション(トレイアプリ)があるc#のプロジェクトに取り組んでいます。
私は2人の間でコミュニケーションをとる必要があります。最初に、クライアントが接続してユーザー名を提供するために、サービスでNetTcpBindingを使用してエンドポイントを設定しました。その後、クライアントはそれぞれエンドポイントを設定します。net.tcp:// localhost:5001 / UserApp /'username'、ポート共有が有効になっています。その後、サービスはユーザー名を知って、そのエンドポイントに接続できます。
ただし、プログラムをUACでうまく機能させようとすると、いくつかの問題が発生しました。UACを有効にしたポート共有では、SMSvcHost.exe.configの<'allowAccounts>にユーザーを登録する必要があります。ユーザーを追加しても、エンドポイントを登録しようとすると、次のエラーが発生します。
アクセスが拒否されたため、サービスエンドポイントはURI'net.tcp:// localhost:5001 / UserApp/myuser'をリッスンできませんでした。SMSvcHost.exe.configの適切なallowAccountsセクションで、現在のユーザーにアクセスが許可されていることを確認します。
また、ユーザーアプリケーションをホストするときにうまく機能するNetNamedPipeBindingに切り替えてみました。ただし、このバインディングを使用すると、サービスはクライアントによって開かれたエンドポイントにアクセスできません。
したがって、基本的には、単一のサービスが同じマシン上の複数のユーザーアプリケーションにエンドポイントを提供し、サービスが複数のユーザーアプリケーションに接続してイベントの更新を送信できるようにする方法が必要です。
助言がありますか?
.net - WCF NamedPipeチャネルに障害が発生する原因は何ですか(サーバー側で?)
これが少し基本的なことのように思われる場合はお詫び申し上げますが、WCFは初めてであり、プロセス間通信全般についても初めてです。
セットアップの詳細
Windowsサービスとして実行されるアプリケーションの一部であるWCF「サーバー」でNetNamedPipeBindingを使用しています。
DuplexChannelFactoryによって作成されたチャネルを使用して、WCFサーバーと通信する2つのクライアントがあります。1つはASP.NetMVC3 Webアプリケーションで、ページ要求ごとにチャネルを作成します(そしてチャネルを閉じます**)。もう1つはWPFアプリケーションです(サービスの一種の監視コンソール/診断ツールとして使用されます)。
多くの人がWebアプリケーションにアクセスし、すべてが正常に実行されます(多くの場合、1週間以上)が、WCF「サーバー」内で何かが壊れ、クライアントが「通信オブジェクト、System.ServiceModel.Channels」という例外を報告し始めることがあります。 ServiceChannelは、チャネルプロキシを作成しようとするたびに、「障害状態にあるため、通信に使用できません」。
サーバーに「障害」が発生すると、接続しようとするたびにそのエラーが発生します。コンソールアプリケーションの新しいインスタンスでさえ、それを報告します。これは、それが「クライアント」側の問題ではないと私に信じさせます。
**注:チャンネルはページリクエストごとに閉じられると思います。これはMVCコントローラーのメンバーとしてインスタンス化されますが、私の知る限り、これは範囲外であり、リクエストの最後に破棄されます。おそらく私は間違っていますか?
質問):
どこを見ればよいか、そしてテスト環境でこの問題をどのように再現できるかについて、誰か提案がありますか。
このようなことを完全に排除することはできますか?または、名前付きパイプサービスに数分ごとに接続し、失敗した場合にサービスを再起動しようとするスレッドを「サーバー」内に配置する必要がありますか?
追加情報
名前付きパイプでリクエストをリッスンするために(WCF「サーバー」で)使用しているコードを含めると役立つ場合があります
さらに質問を
私が正しく理解していると仮定すると、各NamedPipeの「チャネル」は事実上TCP接続と同じものです(各クライアント/サーバーペアに固有)。新しいクライアントでチャネル障害エラーが発生し続ける場合は、クライアントによって作成されているすべての新しいチャネルが最初から何らかの形で壊れている可能性があります。これは、障害がServiceHost内のどこかにあることを意味しますか?ここで失敗したイベントをホストをキャッチすることに何か利点はありますか?
決議の更新(2013)
私がこの質問をしてから非常に長い時間が経っていることを私は知っています-しかし、私はここSOで私の歴史の中でそれに気づきました、そして私はニックが頭に釘を打ったことを付け加えるべきだと思いました。問題を引き起こしたのはメッセージのペイロードサイズだったと思います。メッセージには、それぞれが前のレポートにリンクされている「レポート」オブジェクトのリストが含まれていました。時間の経過とともに、このリストは大きくなります。古いレポートを削除し、WCFメッセージを多かれ少なかれ固定サイズに保つことで、障害を停止しました。この数年間、アプリケーションは非常に確実に実行されています。
c# - 現在開いているnetNamedPipeチャネルを表示しますか?
現在開いているnetNamedpipeチャネルを特定する方法はありますか?これは、WCFクライアント/サーバーをデバッグし、チャネルを適切に閉じていることを確認するのに役立ちます。
これは、ネットワーク接続用のnetstatツールに似ていますが、代わりにnetNamedPipes用です。
wcf - NetNamedPipeBindingを使用してWindowsサービスでホストされているWcfサービスのセキュリティ
NetNamedPipeBindingプロトコルを介してWindowsサービスでホストされるWCFサービスを作成しました。次に、このサービスにアクセスする必要があることがわかっているユーザー名とパスワードを持つユーザーのように、このサービスにセキュリティを提供したいと思います。メソッドレベルの認証を提供するにはどうすればよいですか。このサービスにアクセスするユーザーに?
wcf - Windows Server 2008 での WCF NetNamedPipeBinding TimeoutException
WCF NetNamedPipeBinding に問題があります。Windows XP マシンで Visual Studio 2008 を使用してサーバー コードとクライアント コードを実行すると、すべて正常に動作します。しかし、サーバーを Windows サービスとして展開し、クライアント アプリを Windows Server 2008 にインストールするとすぐに、コントラクト メソッドを使用しようとすると、クライアント エンドで TimeoutException が発生します。クライアントを正常に作成して開くことができるようですが、どのメソッドも呼び出すことができません。
サービス初期化コード:
クライアント初期化コード:
Windows サービスは「ローカル システム アカウント」として実行されます。何が問題なのか途方に暮れています。セキュリティ アカウントの問題なのか、それとも名前付きパイプが開いているのかさえわかりません。クライアント側を正常に作成して開くことができるので、少なくとも名前付きパイプが見つかったように見えると思います。TimeoutException がなければ、どのサービス メソッドも呼び出すことができません。
c# - wcf サービスのシリアル化速度を向上させるにはどうすればよいですか?
wcf サービスでの圧縮に関する質問です。netnamedpipe バインディングを使用して、いくつかのエンティティ オブジェクトを呼び出し元のアプリケーションに送信しています。それが悪い考えであることはわかっていますが、それが私の顧客が実装したい方法です。
そのため、現在、約 45000 個のデータセット (エンティティ オブジェクト) を netnamedpipe 経由で送信する必要があります。それは本当に遅いです。送信前にデータ オブジェクトを byte[] に圧縮するクラスを実装しましたが、45000 セットの送受信にはまだ約 45 秒かかります。
私はこのように圧縮しています:
それを改善する方法はありますか?45 秒は長すぎます :( 主な理由は、エンティティ オブジェクトのシリアル化である可能性があります..しかし、それをスピードアップするにはどうすればよいですか?