写入OwinResponse内容,同时设置StatusCode
Write OwinResponse content and set StatusCode at the same time
是否可以在将状态代码设置为 200 以外的值时使用 OwinResponse.Write?
我在 OwinMiddleware 中有以下代码,但只要调用 OwinResponse.Write,StatusCode 始终设置为 200 :(
response.OnSendingHeaders(state =>
{
var resp = (OwinResponse) state;
var message = string.Format(
"Max API concurrent calls quota exceeded, please try again later. Maximum admitted: {0}",
_maxConcurrentRequests);
resp.ReasonPhrase = message;
resp.Write(message);
resp.StatusCode = 429; // doesn't work here unless I comment out the line above
}, response);
- StatusCode 必须在写入正文之前设置,而不是之后。
- 不要在 OnSendingHeaders 中写入正文,它是递归的
OnSendingHeaders 通常由写入正文触发。
- 你为什么还要在这里使用 OnSendingHeaders?为什么不做所有的
这直接在响应上?
- 这比通常包含在原因短语中的信息要多得多。该级别的详细信息属于响应正文。 429 的默认原因短语是
Too Many Requests
.
是否可以在将状态代码设置为 200 以外的值时使用 OwinResponse.Write?
我在 OwinMiddleware 中有以下代码,但只要调用 OwinResponse.Write,StatusCode 始终设置为 200 :(
response.OnSendingHeaders(state =>
{
var resp = (OwinResponse) state;
var message = string.Format(
"Max API concurrent calls quota exceeded, please try again later. Maximum admitted: {0}",
_maxConcurrentRequests);
resp.ReasonPhrase = message;
resp.Write(message);
resp.StatusCode = 429; // doesn't work here unless I comment out the line above
}, response);
- StatusCode 必须在写入正文之前设置,而不是之后。
- 不要在 OnSendingHeaders 中写入正文,它是递归的 OnSendingHeaders 通常由写入正文触发。
- 你为什么还要在这里使用 OnSendingHeaders?为什么不做所有的 这直接在响应上?
- 这比通常包含在原因短语中的信息要多得多。该级别的详细信息属于响应正文。 429 的默认原因短语是
Too Many Requests
.