我剛剛完成了我的第一個WCF 4.0 Rest服務,不明白爲什麼在通過Fiddler和Firefox調用服務之間所返回數據的內容類型發生變化。這裏是我的服務合同: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一個電話,我可以看到的內容類型設置爲「text/html的」,而在小提琴手調用相同的請求顯示「應用程序/ XML」的正確的內容類型。調用「/ json」後綴請求 - firefox中的「text/html」和fiddler中的「application/json」會發生同樣的事情。
那麼,爲什麼會發生這種情況呢?我信任哪一個?我下載了JSONView Firefox插件,但是這使得一切看起來像json。它將XML視爲JSON。
我敢肯定我錯過了一些明顯的東西。任何幫助將不勝感激。
ahhh,現在有道理。感謝您的澄清。我只是在Firefox和Fiddler中檢查URL,看看我的代碼是否正常工作。我被不同的結果弄得很困惑,並確信它就是我。所以,我假設如果我使用jQuery來訪問我的「/ json」後綴urls,它將接收正確的json數據,因爲我指定了jquery所期望的內容類型。我將不得不驗證這一點,但根據你的回答它是有道理的。再次感謝。 –