写入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);
  1. StatusCode 必须在写入正文之前设置,而不是之后。
  2. 不要在 OnSendingHeaders 中写入正文,它是递归的 OnSendingHeaders 通常由写入正文触发。
  3. 你为什么还要在这里使用 OnSendingHeaders?为什么不做所有的 这直接在响应上?
  4. 这比通常包含在原因短语中的信息要多得多。该级别的详细信息属于响应正文。 429 的默认原因短语是 Too Many Requests.