當涉及到安靜的東西,AJAX,等等所以請溫柔。Ajax請求返回空響應使用ServiceStack
我有一個問題,我採取了示例ServiceStack「Todo」服務,並試圖開發一個使用此服務作爲數據源的移動客戶端。我試圖瞭解它是如何工作的,所以我可以構建一個特定的服務,我覺得SS更適合WCF/WebAPI。
無論如何,讓我們假設該服務正在運行http://localhost:1234/api/todos
我已經啓用了CORS支持,它基於將各種其他帖子中發現的信息組合在一起。 所以我配置的功能如下:
Plugins.Add(new CorsFeature());
this.RequestFilters.Add((httpReq, httpRes, requestDto) =>
{
httpRes.AddHeader("Access-Control-Allow-Origin", "*");
//Handles Request and closes Responses after emitting global HTTP Headers
if (httpReq.HttpMethod == "OPTIONS")
{
httpRes.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
httpRes.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
httpRes.StatusCode = 204;
httpRes.End();
}
});
,我有這樣的服務方法上TodoService:
[EnableCors]
public object Post(Todo todo)
{
var t = Repository.Store(todo);
return t;
}
使用瀏覽器(FF/IE)如果我把這稱爲AJAX功能:
var todo = { content: "this is a test" };
$.ajax(
{
type: "POST",
contentType: "application/json",
data: JSON.stringify(todo),
timeout:20000,
url: "http://localhost:1234/api/todos",
success: function (e) {
alert("added");
app.navigate("Todo");
},
error: function (x, a, t) {
alert("Error");
console.log(x);
console.log(a);
console.log(t);
}
}
);
從http://localhost:1234
,那麼它一切正常。待辦事項被添加並且在成功功能中,「e」包含服務創建的返回待辦事項對象。然而,如果我從其他任何地方(http://localhost:9999
即運行移動客戶端應用程序的asp.net開發服務器)調用此方法,那麼雖然Service方法執行,並且待辦事項確實已添加到服務器端,但響應返回到jquery是空的,它立即打錯誤函數。
我相信我在做一些愚蠢的事情,但我不能爲我的生活看到它。 任何人都有任何線索?在此先感謝...
更新:那麼現在看來,以確定工作,這個問題似乎是
httpRes.AddHeader("Access-Control-Allow-Origin", "*");
「選項」塊之外。 因此,在APPHOST工作的代碼是
Plugins.Add(new CorsFeature());
this.RequestFilters.Add((httpReq, httpRes, requestDto) =>
{
//Handles Request and closes Responses after emitting global HTTP Headers
if (httpReq.HttpMethod == "OPTIONS")
{
httpRes.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
httpRes.AddHeader("Access-Control-Allow-Origin", "*");
httpRes.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
httpRes.StatusCode = 204;
httpRes.End();
}
});
如果它解決了您的問題,可能需要添加更新作爲問題的答案。這會讓其他人有類似問題 – levelnis 2013-02-24 10:31:17
@levelnis,我會盡快知道問題已解決:) – 2013-02-24 11:26:16
不夠公平。儘管如此,你仍然可以添加它作爲答案,不是嗎?只有在確認解決方案後才接受它。您的電話... – levelnis 2013-02-24 11:34:18