3

正文返回錯誤頁我正在使用.NET(C#)中的HttpListener創建REST API。除了一個小問題,這一切都很好。如何使用HttpListener/HttpListenerResponse

我試圖返回狀態代碼而不是OK(200),例如ResourceNotFound(404)的響應。

當我將HttpListenerResponse的StatusCode設置爲200以外的值並創建響應正文(使用HttpListenerResponse.OutputStream)時,它似乎將狀態碼重置爲200.我無法發送響應與StatusCode 404和一個消息主體。但是,根據HTTP規範,這應該是可能的。我正在使用Fiddler檢查請求和響應,但是我無法得到我正在尋找的內容。

+0

我遇到了同樣的問題與返回的「201」創建資源時。當返回的狀態碼是'200'(OK)時,內容主體似乎是空的。 – MvdV

回答

1

我有同樣的問題,找到了問題的根源:

如果你寫的機身中設置的OutputStream之前StatusCode(或任何其他財產),響應將被髮送之前修改應用!

所以,你必須按以下順序進行:

public void Send(HttpListenerContext context, byte[] body) 
{ 
    // First, set a random status code and other stuffs 
    context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; 
    context.Response.ContentType = "text/plain"; 

    // Write to the stream IN LAST (will send request) 
    context.Response.OutputStream.Write(body, 0, body.Length); 
}