問題タブ [wcf]
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.
wcf - VBScript/ASP から WCF サービスへの HTTP ポストを実行し、応答を取得するために使用されるメッセージをフォーマットするにはどうすればよいですか?
投稿を行うことは問題ではありません! 応答が得られるようにメッセージをフォーマットすることが問題です。
理想的には、メッセージを作成し、WinHTTP を使用して WCF サービス (IIS でホストされている) への投稿を実行し、応答を取得できるようにすることができますが、これまでのところ、適切に動作するものを作成できませんでした。
これを簡単に行う例はありますか?
2.0 の Web サービスの世界では、これは web.config に設定を入れて、サービスが投稿に応答するようにし、適切なパラメーターを使用して適切な Web メソッドを呼び出すのと同じくらい簡単でした。WCF の世界では、これに相当するものはないようです。
今のところ、コンシューマー (vbscript エンド) を .NET に変換するオプションはありません。
この時点で、エンドポイントで、.NET 3.5 でサポートされているものまで、利用可能なバインディングを使用するように変換できると仮定しますが、同時にこれが WsHttpBinding または BasicHttpBinding を使用して実行できる場合、これに対する適切な答えは次のようになります。 VBScript のコンテキストでこれらのバインディングのいずれかのメッセージをフォーマットする方法を説明するか、それを行う方法がない場合は、それを行うことはできません。これが WebHTTPBinding を使用して実行できる場合、WebInvoke 属性を既に調査しており、適切に機能する VBScript から WCF へのテストを作成できなかったため、それを実現する方法が見つかりませんでした。
投稿されたデータ型が文字列で、応答も文字列であるとします。
また、この質問は WinHTTP 関連ではありません。WinHTTPを使用して投稿を実行する方法はすでに知っています.WCFサービスが応答するメッセージの構築が問題です。
WinHTTP 以外のものを使用して、ASP から XMLHTTP などの WCF サービスへのポストを実行することもできますが、WCF サービスが応答する XML メッセージを作成するという問題がまだ残っています。これのバリエーションを試してみましたが、これを実現するためにどのような形式を使用する必要があるかまだわかりません。
理論的には、WCF サービスが必要とするのは適切にフォーマットされたメッセージだけであることはわかっています。私はメッセージを適切に作成することができません。通常、誰もがメッセージを送信する方法についていくつかの提案をしていますが、誰もが慣れているため、この状況で適切なメッセージ形式がどのようなものになるかについて、誰かが実際の例を示しているのをまだ見ていません。 .NET を使用してメッセージを送信すると、そのコンテキストですべてが完了します。
wcf - WCF - Faults / Exceptions versus Messages
We're currently having a debate whether it's better to throw faults over a WCF channel, versus passing a message indicating the status or the response from a service.
Faults come with built-in support from WCF where by you can use the built-in error handlers and react accordingly. This, however, carries overhead as throwing exceptions in .NET can be quite costly.
Messages can contain the necessary information to determine what happened with your service call without the overhead of throwing an exception. It does however need several lines of repetitive code to analyze the message and determine actions following its contents.
We took a stab at creating a generic message object we could utilize in our services, and this is what we came up with:
If all my service calls return this item, I can consistently check the "Success" property to determine if all went well. I then have an error message string in the event indicating something went wrong, and a generic item containing a Dto if needed.
The exception information will have to be logged away to a central logging service and not passed back from the service.
Thoughts? Comments? Ideas? Suggestions?
Some further clarification on my question
An issue I'm having with fault contracts is communicating business rules.
Like, if someone logs in, and their account is locked, how do I communicate that? Their login obviously fails, but it fails due to the reason "Account Locked".
So do I:
A) use a boolean, throw Fault with message account locked
B) return AuthenticatedDTO with relevant information
.net - WCFのMSMQバインディングでメッセージの失敗を処理するにはどうすればよいですか
WCFサービスを作成し、netMsmqBindingバインディングを利用しています。
これは、Dtoをサービスメソッドに渡し、応答を期待しない単純なサービスです。メッセージはMSMQに配置され、ピックアップされるとデータベースに挿入されます。
データが失われていないことを確認するための最良の方法は何ですか。
私は次の2つの方法を試しました。
例外をスローする
これにより、メッセージは手動で閲覧できるようにデッドレターキューに入れられます。私のstrviceが始まるときにこれを処理することができます
バインディングにreceiveRetryCount="3"を設定します
3回試行した後-これは瞬時に発生しますが、これはメッセージをキューに残しているようですが、私のサービスに障害があります。サービスを再起動すると、このプロセスが繰り返されます。
理想的には、次のことを行いたいと思います。
メッセージを処理してみてください
- これが失敗した場合は、そのメッセージを5分間待ってから、再試行してください。
- そのプロセスが3回失敗した場合は、メッセージをデッドレターキューに移動します。
- サービスを再起動すると、デッドレターキューからのすべてのメッセージがキューに戻され、処理できるようになります。
これを達成できますか?もしそうなら、どのように?特定のシーンでWCFとMSMQを最適に利用する方法に関する優れた記事を教えてください。
どんな助けでも大歓迎です。ありがとう!
いくつかの追加情報
WindowsXPおよびWindowsServer2003でMSMQ3.0を使用しています。残念ながら、MSMQ4.0およびVista/2008を対象とした組み込みのポイズンメッセージサポートを使用できません。
wcf - WCF Oracle アダプターと UDT
現在の WCF アダプターを使用して Oracle UDT を操作する方法はありますか?
wcf - WCFDataContractsと基礎となるデータ構造
WCFサービスを介して公開するオブジェクトに関連して何が意味があるのか疑問に思っています-ビジネスエンティティにWCFシリアル化仕様を追加する必要がありますか、それともビジネスエンティティをWCFを介して公開するDataContractsにマップするコンバーターを実装する必要がありますサービス?
現在、DataAccess、Business、Contractのさまざまなレベルのエンティティがあります。DataAccessからBusinessに、およびBusinessからContractに、またはその逆にエンティティをマップできるコンバーターを配置しています。それらの実装と保守は時間がかかり、かなり面倒です。これに関連するベストプラクティスは何ですか?
NHibernateやEntityFrameworkなどのOR/Mを使用していた場合、ORMからエンティティを直接公開する必要がありますか、それとも現在と同じ方法で抽象化する必要がありますか?
.net - WCFの構成を容易にする
デスクトップアプリケーションによって動的に接続された一連のWCFWebサービスがあります。
私の問題は、WCFが機能するために必要な非常に詳細な構成設定です。SSLを機能させるには、カスタム設定が必要です。MTOMまたはその他のものを機能させるには、さらに多くのことが必要です。圧縮したいですか?ああ、またか...
WCFは非常に強力です。さまざまな方法で接続できますが、すべて詳細な構成が必要なようです。ホストとクライアントが完全に一致しない場合、エラーを解読するのが難しくなります。
デスクトップアプリの構成をはるかに簡単にしたいのですが、理想的にはある種の自動検出です。デスクトップアプリのユーザーは、URLを入力するだけで、後はそれを実行できるはずです。
誰かがこれを行うための良い方法を知っていますか?
Visual Studioで構成を設定できることは知っていますが、さまざまなサーバー設定に基づいてデスクトップアプリで構成できるようにしたいと思います。
VSのツールは外部で使用できることは知っていますが、デスクトップアプリのユーザーがWCFの専門家である必要はないことを求めています。私はMSがこれを意図的に複雑にしすぎたことを知っています。
WCF設定の自動検出を可能にする方法、メカニズム、サードパーティライブラリなどはありますか?
wcf - WCF REST キャッシュ - クライアント側とサーバー側
RESTful WCF サービスを作成しました。E タグを組み込み、ヘッダーを期限切れにします。
キャッシュは、ブラウザから使用する場合にうまく機能します。ただし、WCF チャネル ファクトリまたは .NET Web 要求オブジェクトから呼び出す場合、キャッシュはどのように機能するのでしょうか?
したがって、304 not modified 応答が返されたときに Web サイトで WCF restful サービスを呼び出しているシナリオでは。どうすればこれを処理できますか。ブラウザはこの問題を検出し、変更されていないバージョンをキャッシュから返します。
ただし、クライアントがブラウザではない場合、ブラウザがキャッシュする方法に似た独自のバージョンのキャッシュを作成する必要がありますか?
どんな助けや洞察も大歓迎です。
wcf - IISでプログラム設定を使用してWCFエンドポイントをホストする
wsHttpBindingを公開するWCFサービスをIISでホストする必要があります。その部分は、私のweb.configのsystem.serviceModelの設定を使用してうまく機能しています。
私が今必要としているのは、クライアントによっても使用される構成アセンブリを介して構成(maxReceivedMessageSizeやその他のオプションなど)をセットアップすることです。
これはどのように可能ですか?バインディング構成をオーバーロードするためのクライアントのように、.svcファイルにハンドルが表示されません。これは、クライアント/チャネルを手動で宣言する必要があるWindowsサービスとは対照的に、アプリケーションの起動時にISSによって自動的に処理されるためだと思います。
私はこれについて正しいですか?そして、彼の問題の解決策(IIS内でのホスティングが必要な場合)は、すべての構成を削除し、代わりに起動時にホスティングを処理するHttpHandlerを作成しますか?
私が正しければ、これを書くのにかなりのスペースを無駄にしたと思いますが、何かが足りないと思って仕方がありません。
.net - WCF サービス用に自動生成された DMBL ファイルの編集
このプロジェクトでは、DBML ファイルにリンクされた標準の自動生成された designer.cs ファイルがあり、データベース テーブルにマップされるすべてのオブジェクト クラスが含まれています。
これらのオブジェクトを WCF サービスを介して直接渡したいので、必要に応じて [DataContract] および [DataMember] 属性で装飾する必要があります。データベース スキームの変更またはその他の変更時に designer.cs ファイルが再生成されたときに変更が消去されないようにするための最善の方法は何ですか。
部分クラスはオプションですが、DataMember 属性で装飾したいプロパティが自動生成された designer.cs ファイルで既に定義されている場合、同じプロパティ定義を部分クラスに追加することはできません。 2 回定義されています。
wcf - WCF 3.0 でクライアント IP アドレスを取得する
どうやら、WCF 3.5 ではクライアント IP アドレスを簡単に取得できますが、WCF 3.0 では取得できません。誰でも方法を知っていますか?