私は初めてのWCF 4.0 Restサービスを終了しましたが、FiddlerとFirefox経由でサービスを呼び出す間に返されるデータのContent-Typeが変更される理由を理解していません。WCF 4.0 Restサービス設定のコンテンツタイプ
[ServiceContract]
public interface IProjectService
{
[OperationContract]
[WebGet(UriTemplate = "project/{id}/json", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
ProjectDataContract GetProjectJson(string id);
[OperationContract]
[WebGet(UriTemplate = "project/{id}/xml", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml)]
ProjectDataContract GetProjectXml(string id);
[OperationContract]
[WebGet(UriTemplate = "userprojects/{userKey}/json", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
List<ProjectDataContract> GetProjectsByUserJson(string userKey);
[OperationContract]
[WebGet(UriTemplate = "userprojects/{userKey}/xml", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml)]
List<ProjectDataContract> GetProjectsByUserXml(string userKey);
}
ご覧のとおり、各操作の応答形式を設定しています。要求が "/ json"で終わる場合は、jsonデータを返します。要求が "/ xml"で終わると、xmlデータが返されます。少なくともそれは私の意図です。
Firefoxでhttp://localhost:5050/ProjectServiceLibrary/project/27/xmlを呼び出すと、content-typeが "text/html"に設定されているのに対し、fiddlerで呼び出された同じ要求では正しいアプリケーションタイプ "application/xml"が表示されます。同じことが、 "/ json"という接尾辞付きの要求(firefoxでは "text/html"、Fiddlerでは "application/json")を呼び出すと同じことが起こります。
これはどうしてですか?どちらを信頼しますか?私はJSONView Firefoxのアドオンをダウンロードしましたが、それはすべてがjsonのように見えます。 XMLをJSONとして扱います。
私は何かが明らかでないと確信しています。どんな助けでも大歓迎です。
ああ、これは今や理にかなっています。説明をありがとう。 FirefoxとFiddlerのURLをチェックして、コードが機能しているかどうかを確認していました。私は本当に異なる結果によって混乱していて、それが私であることを確信しました。だから、jQueryを使用して、 "/ json"という接尾辞のURLにアクセスすると、正しいjsonデータを受け取ると仮定しています。なぜなら、jQueryが予期しているコンテンツタイプを指定しているからです。これを確認する必要がありますが、あなたの答えに照らしてそれは意味があります。再度、感謝します。 –