問題タブ [wcf-endpoint]
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# - ストリーム エンドポイントへの WCF サービス サービス呼び出しが 3 回目の呼び出しで失敗する
私がここに持っているものの簡単な概要:
WCF Soap サービスは HTTPS 経由で実行されており、タイプ証明書のメッセージ資格情報が使用されています。(mex 以外に) 2 つのエンドポイントを使用しています。1 つは通常のサービス呼び出し用、もう 1 つはストリーミング ファイル用です。これがサービスの私のweb.configです(アイテムのいくつかの名前を編集しました):
このサービスには、私がテストしているメソッド DownloadDocument があります。署名は次のとおりです。
DocumentDownloadResponse DownloadDocument(DocumentDownloadRequest リクエスト);
渡されたデータが有効でない場合、サービスは例外をスローし、DownloadDocument はそれらの例外をキャッチして、応答オブジェクトでエラー メッセージを返すことに注意してください。
DocumentDownloadRequest は次のようになります。
そして DownloadDocumentResponse:
クライアントから呼び出す方法は次のとおりです。
SecurityToken と LoginName は検証が必要な項目です。奇妙なのは、私のテスト クライアントから、有効なデータを指定して DownloadDocument を呼び出すと、何度でもファイルを完全にダウンロードできることです。ただし、無効な LoginName または SecurityToken を渡すと、正しくないデータを示すエラー メッセージが表示されます (予想どおり)。ただし、無効なデータを 3 回渡すと、クライアントはタイムアウトします。サービスをローカルで実行しても、この問題は発生しません。すべてが期待どおりに実行されます。奇妙なことに、フィドラーを開いた状態で実行すると、この問題は発生しません。開発サーバーでサービスを実行すると、問題が発生します。
開発サーバーの構成は、ローカルで実行しているものと一致します。SvcTraceTool を使用すると、最初の 2 つの成功した呼び出しのみが記録され、失敗した呼び出しは記録されないことを除いて、エラーは表示されません。エンドポイントが何らかの形で閉じられたように思えます。
崖:
1) 2 つのエンドポイントを持つサービス。そのうちの 1 つはストリーミング (私が関心のあるもの) です。2) ストリーミング エンドポイントを使用して、有効なデータを含むファイルをダウンロードするメソッドを呼び出すことができます。3) サービスは正しくないデータを 2 回キャッチし、3 回目はハングします。SvcTraceTool にログが記録されず、クライアントがタイムアウトします。
何か案は?
ありがとう
c# - サービス参照を含むプロジェクトへの参照:不明なエンドポイント
私は持っています:
- WCFサービス[アプリケーション1]
- このサービスと通信するロジック[Project1Application2]
- このロジックを使用したWebページ[Project2Application2]
Logicプロジェクトで、Serviceにサービス参照を追加しました。Webページで、Logicにプロジェクト参照を追加しました。
これで、サービスへのエンドポイントがLogicプロジェクトで定義されたため、 Webページからサービスに接続できなくなりました。
私の解決策は、ロジック構成の一部をWebページ構成にコピーすることであることを知っていますが、それは良い解決策ではないと思います。
Logicをブラックボックスにしたいと思います。別のサービス、おそらく別のサービスに変更しないかどうかわからないので、WebPageでLogicの動作を「知り」たくありません。
より良い解決策はありますか?WebPageにServiceへの接続方法を認識させるLogicプロジェクトでできることはありますか?
例外が発生しています:
Could not find default endpoint element that references contract
wcf - netTcpBinding (ホストされている IIS ではない) を使用する WCF サービスのデプロイ
netTcpBinding で WCF を使用してクライアント サーバー アプリを開発しています。
私のソリューションには、クライアントとサーバーの 2 つのプロジェクトがあります。
これまでのところ、WCF サービスを機能させるには、app.config ファイルでいくつかの構成を行う必要があることを学びました。これは私がやったもので、うまくいっています。
しかし、クライアントが接続するために、サービスをサーバーに展開するときに何をすべきかを見つけるのに問題があります。私の問題は、「localhost」以外の場所にサービスをデプロイするときに、app.config (または他の場所) で何を変更する必要があるかわからないことです。
これが私のサーバー アプリの app.config ファイルです。
「mex」エンドポイントと http プロトコル ベース アドレスは、クライアントがメタデータを取得するために存在します (それ以外の方法では取得できませんでした)。
したがって、サーバーをデプロイする場所の IP アドレスが事前にわからないため、構成ファイルまたは ini ファイルからエンドポイントを読み取る必要があります (エンドポイントごとにコンパイルする必要はありません)。 .
また、クライアント側で何を変更する必要がありますか? クライアント app.config の関連セクションは次のとおりです。
アドバイスをいただければ幸いです。
c# - プログラムでIISでWCFサービスをホストする方法は?
ファイルweb.config
経由でホストされている Web アプリケーションで構成されている WCF 3.0 サービスがあります。.svc
アドレス値は、web.config のプレーン テキストであってはなりません。これは、私たちが持っている暗号化アルゴリズムで暗号化し、そこに暗号化された値のみを保存するためです。それはどのように可能でしょうか?
EncryptedAddress
から値を読み取り、実行AppSetting
時に復号化することで、実行時にアドレスを設定できるように、IIS で WCF サービスをプログラムでホストする必要があるのではないかと考えていました。それはどのように可能でしょうか?
certificate - System.Data.Services.IRequestHandler コントラクトを持つ Data Services エンドポイントがエラーをスローする
System.Data.Services.IRequestHandler コントラクトでエンドポイントを作成しようとすると、次のエラーが発生します。
System.ServiceModel.Channels.Message 型のパラメーターまたは戻り値の型、または MessageContractAttribute と異なる型の他のパラメーターを持つ型があるため、操作 'ProcessRequestForMessage' を読み込むことができませんでした。System.ServiceModel.Channels.Message または MessageContractAttribute を持つ型を使用する場合、メソッドは他の型のパラメーターを使用してはなりません。
このエラーに関する他の 2 つの質問 ( hereおよびhere ) を見つけましたが、どちらにも満足のいく解決策はありませんでした。Northwind の例を引っ張ってきて、問題を再現できました。
簡略化された web.config ファイル:
.svc ファイル:
System.Data.Services.IRequestHandler コントラクトを独自のものに置き換え、エラー メッセージで問題となっているパラメーターを削除することで、エラーを取り除くことができます。
エラーをスローする組み込み ServiceContract:
エラーをスローしない私のServiceContract(ただし、すべてのDataService<T>
機能を複製しなかったため、実際には機能しません):
組み込みの ServiceContract をエンドポイントで使用しようとすると、なぜこのエラーがスローされるのか混乱しています。私は Data Services にかなり慣れていないので、他の人には明らかな何かが欠けていると確信しています。
ありがとう
編集:
結局のところ、私の目標は証明書認証を使用することなので、この問題を回避しながらそれを行う方法があれば、私はそれを受け入れます。私はこの例を使用しています。
wcf - 1 つのサービス内の複数のインターフェースに関する問題
クライアントとサーバーの両方が Windows フォームであるソリューションで、NetTcpBinding と共に WCF を使用しています。このサービスは、そのうちの 1 つによってホストされています。私はVS.2012を使用しています。
サーバー側には、(関連する) いくつかのサービス コントラクトがあり、そのすべてが 1 つのサービス クラスに実装されています。このような:
これらは net.tcp://localhost:4545/control/ 経由でアクセスできる必要があり、次のサービス アドレスにつながります。
そして、svcutil.exe を使用してクライアントのものを生成すると、インターフェイスごとに 1 つずつ、2 つのサービス クライアント クラスが生成されることがわかります。そのため、ServiceBClient を使用すると、契約「IServiceB」で「betaEP」を見つけることができなかったことを示す例外が生成されます。 ' app.config に同じバインド構成があり、両方のエンドポイントが定義されている場合でも
この
このクライアント app.config がサーバー構成に基づいて svcutil.exe によって生成された場合、エンドポイントが見つからないのはなぜですか?
1 つのクライアント クラスではなく 2 つのクライアント クラスを生成するのはなぜですか? それが問題の原因になりますか?公開する関連サービスが複数あり、その上で複数のポートを占有したくありません。これは Net TCP Binding であることに注意してください。
c# - WCF エンドポイントの変更
spring.net サンプルに示されている最初の例から、次の構成を使用しています。
私は次のように読むことができます
上記のエンドポイントに正しい IP アドレスとポート番号があれば、これはすべて正常に機能します。
起動時に認識されない IP アドレスとポート番号を使用するようにエンドポイントを編集するコードの方法を探しています。これを行う方法はありますか?
wcf - WCF basicHttpsBinding 警告:「データ型によると無効です」
basicHttpBinding から始めて、WCF アプリケーションを作成しました。app.config では、次のエンドポイントを構成しています。
これで問題なくビルドできます。ただし、プロトコルを HTTP から HTTPS に変更したいと考えています。エンドポイント宣言を次のように変更すると:
(注: 唯一の変更点は、basicHttpBinding -> basicHttpsBinding)
ビルド時に次の警告が表示されます。
この警告が表示されるのはなぜですか? 他に変更する必要があるものはありますか?
完全な app.config は次のとおりです。
c# - WCFWebサービスがEndPointNotFoundExceptionをスローしています
クライアントサービスへの二重通信をサポートするようにWCFサービスを構成しようとしていますが、WSDualHttpBindingに切り替えたため、IISのサービスでこれを取得できます。
メッセージを受け入れることができるエンドポイントがhttp://exampple.com/Temporary_Listen_Addresses/06be1668-e09f-441c-9fc9-999e4922d4a8/1002945c-979b-484e-a2c5-fa3470b6706dでリッスンしていませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。内部例外はnullであり、基本的にサーバー上のサービスはIISでホストされているため、サーバーに接続するクライアントマシンと、自己ホスト型サービスに接続するクライアントアプリケーションに自己ホスト型サービスがあります。wsDualHttpbindingはサーバーからセルフホストサービスへの接続であり、セルフホストサービスはクライアントアプリケーションが通信するための名前付きパイプを公開します。
これがサービスのWeb.configです。
これが私のホストアプリケーションのApp.configです。
そして最後に、クライアントテストアプリケーションからのApp.config:
c# - wcf一方向ノンブロッキング操作
私はそのようなシナリオが必要です:クライアントは応答を待たずにサーバーにメッセージを送信し、メッセージが適切に送信されたかどうかは気にしません。
ファイアウォールがオンになっている、またはインターネットに接続されていないシナリオでは、クライアントは「SendMessage」で停止します。プログラムが応答を停止することを意味します。プログラムが結果を気にしないことを望みます。つまり、接続がない場合は、「SendMessage」などを省略して、プログラムをさらに進めてほしいと思います。
どうすればよいですか、ノンブロッキング方式の解決策はありますか?