問題タブ [wcf-web-api]
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.
asp.net-mvc - 同じサーバーとポート上のWCFRESTWebAPIとMVC
私は、標準のブラウザスタイルのアクセスをまだ持っているRESTベースのシステムをまとめることを検討しています。私の望みは、これらの両方を同じマシン上に置くことですが、私のオプションは何ですか?
- IISを使用して、WebサイトとRESTサービスの両方をホストします(異なるURI、たとえばhttp://mysite.com/とhttp://mysite.com/api
- IISと、同じマシンに異なるサービス( http://www.mysite.comとhttp://api.mysite.comなど)に2つのドメインをマップすることをまだ知らないいくつかの魔法を使用します。
- 2つのテクノロジーを1つのサービスに結合します(ルーティングテーブルを使用して、必要に応じてMVCまたはWCFにリクエストを送信します)。
私の好みは3番目のオプションです。これにより、単一のコードベースと単一のリポジトリにアクセスできるようになります。codeplexの WCFページでは、リリースノートに「MVC3でテストされていません」と記載されています。これは、これが可能なアプローチであることを示唆していますか?
私のサイトとのやり取りの大部分はAPIを介して行われることが意図されているため、RESTの実装にMVCを使用することに熱心ではありません。そのため、これに焦点を当てたいと思います。
javascript - Web サービス API キーと Ajax - キーの保護
これはおそらく一般的なセキュリティの質問ですが、私が開発しているものの領域で質問すると思いました.
シナリオは次のとおりです。API キーを使用して検証し、ユーザーが誰であるかを通知する Web サービス (WCF Web Api) と、フロント エンドでの jQuery とアプリケーションの組み合わせ。
一方では、トラフィックは https である可能性があるため検査できませんが、ユーザーごとに同じキー (GUID など) を使用し、両方で使用している場合、それが取得され、誰かがなりすます可能性があります。ユーザー。
OAuth に似たものを実装すると、ユーザーとアプリごとのキーが生成され、それが機能する可能性がありますが、それでも jQuery 側では、javascript でアプリ API キーが必要になります。
これは、誰かが実際のコンピューターにいて、ソースを表示した場合にのみ問題になります。
私は何をすべきか?
- md5 または何らかの方法でキーを暗号化しますか?
- キーをセッション変数に入れてから、ajaxを使用するときにそれを取得しますか?
- それを乗り越えてください、それはそれほど大きな問題/問題ではありません.
おそらくよくある問題だと思いますので、どんな指摘も歓迎します。
これを明確にするために-これは私が書いたAPIであり、Googleなどではなく、クエリを実行しています。したがって、セッショントークンごとに実行できます。クライアント側を保護するための最良の方法を見つけようとしています私が使用するトークン/キー。
ここでは少し慎重になりすぎていますが、これを使って学習しています。
cross-domain - WCF Web API RESTful は Access-Control-Allow-Origin では許可されていません
クロスドメイン アクセスの問題があるようです。「Access-Control-Allow-Origin: *」を追加することを示しているいくつかのソリューションを見てきましたが、どこでこれを行うことができるかわかりません。
ハンドラーを作成する必要がありますか?
私はWCF Web APIを使用しています。
エラー: XMLHttpRequest はhttp://localhost:8081/Song/0を読み込めません。オリジンhttp://localhost:8080は Access-Control-Allow-Origin で許可されていません。
編集
これは、HTTP メソッドが PUT または DELETE の場合にのみ発生することに気付きました。GET または POST で正常にリクエストを作成できます。
私はjqueryを使用してリクエストを行っています。
理由はわかりませんが、これにより OPTIONS メソッド with Access-Control-Request-Method: DELETE が発生しているようです。
誰がこれを引き起こしているのか知っていますか?
どんな助けでも大歓迎です。
c# - WCF Web API すべてのエンドポイントに引数を追加する方法
私は WCF Web Api Restful Web サービスを持っています。
すべてのサービス呼び出しで、オプションのパラメーターを取得する必要があります。次のようなすべてのエンドポイントにパラメーターと処理を追加せずにこれを行う方法はありますか?
suppress_status_code の目的は、Flash の統合です。Web サービスが 200 以外のものを返す場合、フラッシュはメッセージ本文の処理に時間がかかるため、suppress_status_codes が true の場合、HttpResponseMessage でエラーとエラー ステータス コードを含む「200」を返せるようにする必要があります。
この理由から、Twitter の API には同一のオプション パラメータがあります。
c# - WCF WebApi HttpContent 応答を変更する
WCF Web API を使用して、アプリケーション ロジックが実行された後、ユーザーに返される前に、応答のコンテンツ本文を変更するにはどうすればよいでしょうか。目標は、suppressstatuscontent が true の場合:
- コンテンツ本文に statuscode フィールドを追加する
- 応答のステータスコードを 200 に変更します
私は DelegatingChannel をオーバーライドし、SendAsnyc には次のようなコードがあります。
大きな問題は、これが BOTHとを処理しないことです。これは非常にハックな感じがするので、問題に対処するためのより良い方法があるに違いないと感じています。xml
Json
c# - WcfWebAPIサンドボックスエンドポイント処理
公開されるAPIがあり、サンドボックスがあります。ResourceFactoryにコードを記述したので、api.sandbox.whatever / whateverが機能し、引数のsandbox = trueも機能しますが、これは巨大なハックのように感じます。それを行うためのより良い方法はありますか?
これが私のコードです:
c# - C#WcfWebAPIデシリアライズ応答
非プリミティブを返すWebサービスを単体テストしようとしています。応答は、要求に応じてxmlまたはjsonのいずれかになります。私のテストでは、コンテンツ本体をオブジェクトの1つに逆シリアル化できれば素晴らしいと思います。ここにいくつかのコードがあります:
そして私のテスト:
したがって、基本的には、result.ContentをMyTypeに変換できる必要があり、その方法がわかりません。ありがとう
wcf - WCF WebApi のセルフホスティングが PUT 動詞を受け入れない
PUT 動詞を使用するWCF WebAPIを使用して、HTTP 駆動型 API をまとめました。IIS Express でホストされている MVC3 プロジェクト内でホストされている場合、すべてが設計どおりに機能します。
ただし、単体テストを行うときは、自分のリソースに対してだけでなく、トランスポートの側面をテストしたい場合があります。単体テストが 405 - MethodNotAllowed で失敗します。ここでも、IIS でホストされているのとまったく同じサービスが機能します (構成ファイルで PUT 動詞と DELETE 動詞を有効にしました)。
テストで使用したように、これらの動詞も受け入れるように「自己ホスト型」サービスを取得するにはどうすればよいですか?
ほぼ同じ「get」テストが機能するため、次の概念に問題があるとは思いません..うまくいけば...
テストのセットアップでは、次の Autofac コードを使用してエンドポイントを準備しています (これも「Get」で機能します)。
私のサービスは、次のインターフェースで定義されています。
したがって、たとえば、MachineService がある場合、インターフェイスを実装します (両方ともclass MachineService : IResourceService<string, Machine>
試用... : IResourceService<int, Machine>
済み - Get = OK、Put = Nothing.
EDIT : InternalServerError と MethodNotAllowed エラーの間でバウンスしているようです - セルフホスティングを使用している場合のみ。ユーザーとして、ポートを開く権限があることを確認しました (Win7 + 非管理者) が、その結果とポートの選択は、Get に対して予測可能な機能のようです。「投稿」にも同様の問題があるようです!:-(
EDIT2 : インターフェイスが変更され、動作するようになりました!
wcf - WCF WebApiは、リクエストURIを適切なサービスタイプ/オペレーションにどのようにマッピングしますか?
WCF REST(およびWCF WebApi)はどのようにしてURIを正しいサービスエンドポイントにマップしますか?
WCF WebApiプレビュー4のコンテキスト内で、カスタム委任チャネル内で、着信HttpRequestMessage.RequestUriに基づいて関連するルートプレフィックスまたはサービスタイプを検索したいと思います。
たとえば、
http:// server / employees/Johnのリクエストが届いたとします
- WCFはこれをどのように正しいエンドポイントにマッピングしますか?
がインスタンス化されるまでResourceFactoryProvider
に、具体的なサービスタイプはすでにわかっています。URIとルーティングテーブルルートの間で解決が行われる場所を追跡できないようです。
よろしくお願いします。
c# - C# WCF Web API の問題 Posting/Putting
次のようなWebサービスがあります。
私の global.asx は次のようになります。
C# HttpClient または fiddler を介して Web サービスにアクセスすると、500 がスローされ、メソッドに到達しません。一連のログを追加しましたが、次のエラーが発生しています。
サービス操作 'PutSomeStuff' は、入力パラメーター 'requestMessage' のタイプ 'String' に割り当て可能な値を期待していましたが、タイプ 'HttpRequestMessage`1' の値を受け取りました。
更新: theTextToPut 変数をカスタム オブジェクトにすると、正常に動作します。文字列のようなプリミティブ型の場合、問題が発生するだけです。