問題タブ [operationcontract]
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 UserNamePasswordValidatorはPrimaryIdentity.IsAuthenticatedをチェックする必要がありますか?
現在、を使用しUserNamePasswordValidator
てクライアントユーザーを認証するサービスがあります。検証のコードは次のとおりです。
ご覧のとおり、何か問題がある場合、コードは常に例外をスローします。
さて、質問です-関数ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated
内で真であるかどうかを確認する必要がある理由はありますか?OperationContract
例えば、
どんな助けでも大歓迎です。
c# - wcfサービスOperationContractのCookie
wcfサービスのOperationContractでCookieを読み取ることは可能ですか?コントラクトメソッドでCookie値を読み取ろうとしていますが、常に空です。.aspxページから同じCookieを読み取った場合、値は存在します。何か案は?
.net - webHttpBindingを使用したサービスからHelloWorldの代わりにGibberishを取得する
これは、「HelloWorld」文字列を返すことになっている簡単な例です。ただし、ブラウザには。のようなものが表示されますSGVsbG8gV29ybGQ=
。oldskulスタイルのサービスからプレーンテキストを返す正しい方法はどれですか?
それを知ってください:
文字列を返すことができません。3つのUnicode文字が自動的に先頭に追加され、従来のHTTPクライアントは相互運用できなくなります。
を返すこともでき
p>Message
ますが、それでもdata
変数を抽出するために機能を解析し続ける必要があります。同じメソッドシグニチャでのミキシングMessage
とint
タイプは、AFAIKでは許可されていません。
更新:それはぎこちないものではありませんが、正しくエンコードされた応答です。しかし、そのフォーマットは私が期待するものではありません。私は(以下の紳士が示唆するように)トランスポート層のメッセージング形式の究極の制御がMessage
クラスで得られることを理解しました。UriTemplate
ただし、これを使用すると、リクエスト(属性)を解析する可能性がなくなります。Message
したがって、とを統合する方法を知っておくと便利UriRequest
です。
PS「クリーンな」統合が不可能な場合-最もエレガントな回避策は何ですか?ワイヤーカーテンの後ろで実行され、実装で借用して使用できるコードはありますか?
android - IIS は Android HttpPost が GET であると考えているようです
更新: これらの問題は、301 リダイレクトを実行するリバース プロキシが原因でした。URL をリダイレクト先に変更すると、問題が修正されました。
Android から Web サービスへの POST リクエストを行うのに苦労しています。
IIS7 で次の Web サービスを実行しています。
Firefox からこの URL に POST リクエストを送信すると、期待どおりに動作します。
次のコードを使用して Android デバイスからリクエストを行うと:
Method Not Allowed 405 応答が返され、IIS ログを調べると、この URL への要求が「GET」として表示されます。
リクエストのターゲットを $_SERVER['REQUEST_METHOD'] をエコーする PHP スクリプトに変更すると、出力は POST になります。
Web サービスの web.config には、動詞として GET、HEAD、および POST があります。
私が見落としているものはありますか?
wcf - ソースまたはアクション URL が異なる操作コントラクト
当社のサードパーティ API は 2 つの異なる Web サービスを提供しますが、メソッドとモデルは同じです。それにもかかわらず、それらは URI (Web サービス パス、アクション パス [操作コントラクト]) のみが異なります。
だから私はすることにしました:
VS を使用して wsdl からコードを生成します。
名前空間を編集して同じものを使用し、「共通」にし、代わりにサービス参照を使用しないように、Reference.cs編集コードを使用します。
使用するサービスの正しい URI を処理する新しいプロキシを作成します (内部に Reference.cs をラップします)。
現在、「Method1」に問題があります。アクション名が異なるためです。次の例外があります。
「サーバーは HTTP ヘッダー SOAPAction の値を認識しませんでした: http://www.api.com/service/Method1」
正しいアクション名はhttp://www.api.com/service1/Method1です。
ここでの質問は、各サービスの各メソッドのアクション名を修正するために使用できる構成または動作はありますか?
それとも、API の実装ごとにコントラクトを追加し続ける限り、それぞれのコントラクトを追加し続けて、これに ChannelFactory を使用する必要がありますか?
助けてください、ありがとう。
c# - WCF - アクション文字列の一般化
あらかじめ定義された WSDL (私はこれらを制御しません) をいくつか取得し、それらをデバイスに公開して、さまざまな SOAP/UPnP 要求に応答する必要があります。
とにかく、私はこれですべて機能していますが、任意の数のチャネルで要求できるサービスが 1 つあるため、問題が発生します。説明します:
基本的に、私がやろうとしていることは(この構文が完全に間違っていることは認識していますが、要点を理解できると思います)これです:
元の Action メッセージの一部を、実装しているメソッドにパラメーターとして渡してほしいだけです。
これを実装できると私が考えた他の唯一の方法は、他のメソッドを指定することです。Action="*" を使用して Dispatcher と呼び、OperationContext.Current.IncomingMessageHeaders.Action
. これは、物事を行うための本当に怪しげな方法のように思えます。ここでの主な障害は、私の WCF の経験不足にあると確信しています。
あなたが提供できるどんな助けも大歓迎です。
ありがとう、
c# - WCF - カスタマイズされた WDSL 生成
wsdl 生成でいくつかのカスタマイズをしようと何時間も費やしましたが、結果はありませんでした。主に、やりたいことの明確なサンプルが見つからなかったため、行き詰まりました(何かを見逃している可能性があります)。
要点を説明しましょう:生成された WSDLをカスタマイズしたいと思います。私が見つけた最も関連性の高い記事は、この記事のように、既存のサービスに属性を追加して動作を追加することに関するものです。
私がやりたいことは、OperationContractを分析し、必要に応じて追加の xsd を生成できるようにすることです。
私の質問は次のとおりです。
- 属性を追加せずに、既存の WSDL 生成をどのように追加または傍受できますか?
- 構成ファイルでこのコンポーネントを構成するにはどうすればよいですか?
メタデータがsvcutil.exeによって消費される方法を変更したくありません。生成された wsdl に「オンザフライ」で ComplexType を追加するだけです。
あなたの提案をありがとう!
c# - WCF Rest .svc は、直接表示するとエラーをスローしますが、それ以外の場合は機能します
次のように、2 つの OperationContracts を持つ WCF レスト サービスがあります。
http://localhost/rest.svc/ping/にアクセスすると正常に動作し、http://localhost/rest.svc/files/にアクセスすると正常に動作します。
ただし、http://localhost/rest.svcに直接アクセスすると、次のエラーがスローされます。
System.InvalidOperationException: WSDL エクスポート拡張機能の呼び出しで例外がスローされました: System.ServiceModel.Description.DataContractSerializerOperationBehavior コントラクト: http://tempuri.org/:IRest ----> System.InvalidOperationException: 操作 'AddFile' System.ServiceModel.Channels.Message 型のパラメーターまたは戻り値の型、または MessageContractAttribute と異なる型の他のパラメーターを持つ型があるため、ロードできませんでした。System.ServiceModel.Channels.Message または MessageContractAttribute を持つ型を使用する場合、メソッドは他の型のパラメーターを使用してはなりません。
エラーは理解できましたが、デフォルトの WCF エンドポイント ページが表示されるように修正/抑制する方法を考えていました。RESTのみにWCFを使用しています。
ありがとう!
ジェフリー・ケビン・プライ
wcf - WCF OperationContract-アクションとReplyActionのポイントは何ですか?
このシナリオでは、とのポイントは何Action
ですかReplyAction
?
編集:質問を明確にする必要があります...
これらの部分を指定しない場合、wsdlはどのように異なりますか?とにかく、名前空間、サービス名、操作名の組み合わせを使用するだけではないでしょうか。
wcf - WCF Generics - DataContract と CollectionDataContract では書式設定された名前付けが許可されているのに、DataMember、OperationContract、または ServiceContract が許可されていないのはなぜですか?
基本的にはタイトルの通り:
さて、これで...何が機能し、何が機能しないのか...しかし、問題は...なぜですか? 明らかに、.NET は具体的な型を作成し、型を表すDataContract
andを使用するときに名前をフォーマットすることができますCollectionDataContract
(つまりGenericItem<Foo>
、 or 。では、も同様にフォーマットできるようにしSpecialCollection<Foo>
ないのはなぜですか?DataMember
上記ServiceContract/OperationContract
の方法で(ちょっと)理解できますが、理解できないのは、具体的なタイプを指定すると、操作がまだ正しく機能しないことです。
繰り返しますが、なぜですか?明らかに、ここで Foo の具象型を宣言しています。これは、IGenericService が IGenericService<Foo> であることを意味します。型を認識しているため、OperationContract 名をフォーマットするべきではありませんか?
アップデート:
一般的にフォーマットされたServiceContractを使用できないことに腹を立てた理由を思い出しました...サービスを実装するときに、具体的な型を指定しています...
このためのMicrosoft Connect要求を作成しました。他の属性にこの機能が必要な場合は、賛成票を投じてください。http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2327048-enable-generics-for-datamemberattribute-serviceco