1

クライアント側に .Net サーバー アプリ (WCF REST JSONP サービスを保持) と JavaScript アプリケーションがあります。

JavaScript 側からのクロスドメイン呼び出しを避けるためJSONPに、通信に使用します。私たちが使用しているサーバー側からの JavaScript コールバックで私たちの生活を楽にするためにJavascriptCallbackBehavior: WCF はコールバック関数ですべての JSON 応答をラップしています。

[JavascriptCallbackBehavior(UrlParameterName = "$callback")]
[ServiceBehavior(...)]
public class MySvcREST : ISvcREST
{
   public bool SvcMethod()
   {
      throw new WebFaultException<string>("ERROR!", HttpStatusCode.InternalServerError);
   }
}

上記のコードを使用すると、サービスから次の応答が返されます。

HTTP/1.1 200 OK
Content-Length: 31
Content-Type: application/x-javascript
Server: Microsoft-HTTPAPI/1.0
Date: Fri, 03 Aug 2012 11:43:26 GMT

angular.callbacks._1("ERROR!",500);

EDIT1:実際には、を削除しJavascriptCallbackBehaviorてデフォルトcallback名のままにしても、同様の効果があり、あまり良くありません。

内部にエラーがあるHTTP 200 OKではなく、 HTTP 500エラーコードを取得したいのです。

私の問題を解決する方法、または WCF サービスから JSONP を取得する別の方法はありますか?

4

1 に答える 1

0

残念ながら、私の質問に対する回答は得られませんでしたが、次のやや役立つリンクを見つけました: http://msdn.microsoft.com/en-us/library/ee816916.aspx

この動作は設計によるものだと理解しました...ただし、javascript側(jquery / angular js)からですが、執筆時点では、2番目に返されたパラメーター(私の場合はhttpエラーコード)を読み取る方法はありません。

したがって、回避策以外の解決策があるかどうかは最終的にわかりません。今のところCustomResult、カスタム エラー コードとメッセージを含む を返します。

これらの Web テクノロジが互いに融合しないと、とてもがっかりします...非常に多くの回避策を余儀なくされます。

于 2012-08-06T08:32:41.273 に答える