問題タブ [basichttpbinding]
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.
php - Windows サービス内でホストされる WCF サービス (basicHttpBinding) の WSDL URL
サーバーの 1 つで、Windows サービスで WCF サービスをホストしています。basicHttpBinding で動作させ、.NET でテスト クライアントを構築した後 (最終的には動作しました)、SoapClient クラスを使用して PHP からアクセスしようとしました。最終的な消費者は PHP サイトになるので、PHP で消費できるようにする必要があります。
PHP コードの SoapClient クラスのコンストラクターに WSDL の URL を入力しなければならなかったとき、私は困惑しました。WSDL はどこにありますか? 私が持っているのは次のとおりです。
http://172.27.7.123:8000/WordServiceおよび http://172.27.7.123:8000/WordService/mex
これらのいずれも WSDL を公開しません。
WCF の初心者である私は、愚かなことを尋ねた可能性があります (または、どこかで間違った仮定をしている可能性があります)。優しくしてください :D
いいえ、 http://172.27.7.123:8000/ WordService?wsdl は http://172.27.7.123:8000/WordServiceと異なるものを表示しません:(
IIS でホストする必要がありますか? 通常の WebService を使用する必要がありますか?
wcf - WCF ServiceHostbasicHttpBinding503エラー
Windows2007SP1サーバーでWCFServiceHostをNTサービスとして実行しようとしています。ServiceHostは、単一のサービスエンドポイントをホストする責任があります:次のアドレスを持つbasicHttpBinding:
このServiceHostをローカルマシン(Windows XP)で実行すると、正常に動作します。SOAPメッセージをPOSTすると、HTTP 202コード(「承認済み」)が返されます。これは、サービスの正しい応答です。契約にはIsOneWay=trueがあります。ただし、これを2007サーバーで実行すると、サービスを呼び出そうとすると503エラーが発生します。WCFメッセージのロギングを「ずっと上」にしたのですが、ロギングがまったく表示されないため、これはWCFよりも低いレベルで発生していると思います(呼び出しがWCFの「レイヤー」に到達することはありません)。 )。
sys-adminsと私はさまざまな形式のhttpcfgコマンドを試しましたが、今のところ運がありません。
これをIISでホストしようとすることが解決策になる可能性があることはわかっていますが、本番アプリサーバーにはIISがインストールされていないため、サービスをServiceHostとして実行したいと思います。
どんなアイデアでも大歓迎です!
c# - WCF認証
.Net 3.5でいくつかのコアサービスを構築し、WCFを介してサービスを公開しています。サービスには、内部(つまり、イントラネット内)でのみアクセスされます。サービスは、呼び出し元のユーザーのWindowsクレデンシャルを認証し、AD/機能グループを取得する必要があります。
サービスは、NetTcpBindingおよびBasicHttpBindingを使用して公開する必要があります。
両方のバインディングタイプのセクションにどの構成を追加する必要がありますか?これだけですか:
そうですか?これは、NetTcpバインディングとBasicHttpバインディングの両方に適用されますか?
ありがとう
c# - プログラムで WCF EndpointAddress に ID を設定する
次の関数を使用しSystem.ServiceModel.EndpointAddress
て、WCF サービスに接続するときにを作成しています。
EndPointIdentity
web.config からの次の抜粋と相関する を渡す必要があります。
私の WCF サービスは X509 証明書を使用しているため、ID のタイプは である必要があるようですX509CertificateEndpointIdentity
。このためのコンストラクターでは、証明書を渡す必要があります...しかし、上記のように dns 値を渡したいです。
私のアプローチの何が問題なのか、誰かが提案できますか?
wcf - WCF/basicHttpおよびNTLM認証
NTLM認証がWCF/basicHttpでどのように機能するかを誰かが知っていますか?単一のサービスメソッド呼び出しごとにユーザー資格情報が渡されるのか、それとも後続のサービスメソッド呼び出しに何らかのセキュリティトークンが使用されるのか疑問に思います。
私が使用している正確なバインディング構成:
このタイプの構成は、MSDNリファレンスで見つかりました。しかし、これがパフォーマンスの面で良いアイデアかどうかはわかりません。別の方法は、カスタムGetAuthenticationToken()の種類のメソッドを提供して、クライアントの後続のすべての要求にセキュリティトークンを提供することです。これは、エンタープライズライブラリ-セキュリティアプリケーションブロックを介して実行できます。
詳細:このサービスは、ブラウザー/Silverlightクライアントによって使用されています。
wcf - 「スキーマhttpに一致するベースアドレスが見つかりませんでした」を修正する方法... WCFで
IIS でホストされているサーバーに WCF サービスを展開しようとしています。当然、それは私のマシンで動作します:)
しかし、デプロイすると、次のエラーが発生します。
このコレクションには、スキーム http のアドレスが既に含まれています。このコレクションには、スキームごとに 1 つのアドレスしか存在できません。
これをグーグルで検索すると、serviceHostingEnvironment 要素を web.config ファイルに配置する必要があることがわかりました。
しかし、これを行うと、次のようになります。
バインディング BasicHttpBinding を持つエンドポイントのスキーム http に一致するベース アドレスが見つかりませんでした。登録されているベース アドレス スキームは [https] です。
ベースアドレスが分からないようですが、どうやって指定すればよいのでしょうか?私のweb.configファイルの関連セクションは次のとおりです。
何が起こっているのか、それを修正する方法について誰かが光を当てることができますか?
c# - Winforms でホストされている WCF サービスがシングル スレッドであるのはなぜですか?
古い ASP.NET Web サービスを置き換えるために使用している WCF サービスがあります。サービスは正常に動作しているように見えますが、何らかの理由で同時リクエストを処理できません。私のサービスの実装には、次のプロパティがあります。
私のホスト宣言は次のようになります。
サービスが実行され、正しい結果が返されますが、2 つのクライアントが同時に呼び出しを行おうとすると、呼び出しが一緒に実行されるのではなく、一方のクライアントが他方のクライアントが終了するまでブロックされます。構成ファイルは使用していません。私はすべてをプログラムでやろうとしています。この動作を引き起こしている何かが正しく設定されていませんか? この問題なしで NetTCPBinding を使用して他のサービスを実行しました。
編集: John Saunders への回答: ASP.NET 互換モードについて詳しくありません。私はセッション状態を使用していません。サービスはステートレスで、リクエストを処理するだけです。実際のメソッドの実装は別として、私が行ったすべてのことは、ここにリストされたコードにあります。
考えられる解決策:
host.Open()
メインフォームの form_load イベントから関数を呼び出していました。呼び出しを別のスレッドに移動しました。このスレッドが行ったのは呼び出しhost.Open()
だけでしたが、サービスは期待どおりに動作しているようです。
wcf - 最初の WCF 要求、クライアントは常に System.Xml.XmlException をスローします: 複数のルート要素があります
WCF ホスト アプリケーション プールが起動するたびに、最初の WCF 呼び出しを行うクライアントは常に "System.Xml.XmlException: There are multiple root elements" をスローします。後続の呼び出しはすべて完全に機能します。
この例外は、WCF 要求のコンシューマー/クライアント側で発生します。完全な WCF クライアントと Silverlight クライアントの両方でこれをテストしました。basicHttpBinding、セキュリティなし、および aspnetCompatabilityMode = true を使用しています
アプリプールが生きていれば大したことではありませんが、アクティビティがないとシャットダウンし、バックアップを開始するとエラーが再び発生します。
また、アプリケーション プールは、WCF 以外の要求から別のページに開始される場合があることにも言及する必要があります。ただし、WCF が初めて呼び出されると、クライアント側でこの例外がスローされます。
誰もこれを見たことがありますか?必要に応じて詳細を提供できます。
ありがとう
wcf - WCF-BasicHttp NTLM ESB ガイダンス
IIS にある asmx サービスにアクセスしようとしています。asmx は統合セキュリティを使用しています。ESB ガイダンス 1.0 内で構成された wcf-basichttp アダプターを使用して呼び出そうとしています。
私が得ているエラーは次のとおりです。
HTTP 要求は、クライアント認証スキーム「匿名」では許可されていません。サーバーから受信した認証ヘッダーは「NTLM」でした
エンドポイント構成で設定しようとしました:
どんなアイデアでも評価されます
wcf - MEXエンドポイントのないBasicHttpBindingを使用するWCFサービスは、絶対的な見知らぬ人によって悪用される可能性がありますか?
私が理解していることから:MEXエンドポイント/ WSDLがない場合、サービスは基本的に検出できません。あなたのデータ契約を知っている人だけがあなたのサービスを利用できるはずです。
この主張は水を保持しますか、それともインターネットの悪意のある住人がMEXエンドポイントを持たないサービスを呼び出す/消費する方法を理解する方法はありますか?
編集:アンドリューが指摘したように、この戦略は本当に安全であると見なされるべきではありません。外部の消費者とのQAフェーズでのランダムな悪用から安全であるかどうかについては、もっと疑問に思っています。