【发布时间】:2017-10-16 10:29:54
【问题描述】:
在我的 .net 框架 Web 应用中设置对批处理请求的支持之后。每个单独的请求都返回禁止,即使我将我的不记名令牌复制到每个单独的请求。 我对批处理支持的集成测试如下 - 我的 ServerHelper 代码将不记名令牌添加到请求中。
[TestMethod]
public async Task BatchRequestTest()
{
var requestMessage = new HttpRequestMessage(HttpMethod.Get, ServerHelper.HttpClient.BaseAddress + "values/22");
requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", await ServerHelper.GetAccessToken());
var getMetricsRequest = new HttpMessageContent(requestMessage);
var getTransactionsRequest1 = new HttpMessageContent(new HttpRequestMessage(HttpMethod.Get, ServerHelper.HttpClient.BaseAddress + "values/23"));
var failingRequest = new HttpMessageContent(new HttpRequestMessage(HttpMethod.Get, ServerHelper.HttpClient.BaseAddress + "values/77"));
MultipartContent content = new MultipartContent("mixed", "batch_" + Guid.NewGuid().ToString());
content.Add(getMetricsRequest);
content.Add(getTransactionsRequest1);
content.Add(failingRequest);
HttpRequestMessage batchRequest = new HttpRequestMessage(HttpMethod.Post, ServerHelper.HttpClient.BaseAddress + "batch")
{
Content = content
};
var response = await ServerHelper.HttpClient.SendAsync(batchRequest);
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);//assert true
var responseContents = await response.Content.ReadAsMultipartAsync();
var get1 = await responseContents.Contents[0].ReadAsHttpResponseMessageAsync();
var get2 = await responseContents.Contents[1].ReadAsHttpResponseMessageAsync();
var get3 = await responseContents.Contents[2].ReadAsHttpResponseMessageAsync();
Assert.AreEqual(HttpStatusCode.OK, get1.StatusCode);//assert fail
Assert.AreEqual(HttpStatusCode.OK, get2.StatusCode);//assert fail
Assert.AreEqual(HttpStatusCode.NotFound, get3.StatusCode);
}
我的部分配置负责添加批处理支持:
var server = new HttpServer(httpConfiguration);
appBuilder.UseWebApi(server);
httpConfiguration.Routes.MapHttpBatchRoute(
routeName: "batch",
routeTemplate: "batch",
batchHandler: new DefaultHttpBatchHandler(server)
{
ExecutionOrder = BatchExecutionOrder.NonSequential
}
);
我需要在我的管道中添加一些东西吗?
【问题讨论】:
-
嘿,您找到解决方案了吗?我遇到了同样的问题,需要在我的批处理请求中设置不记名令牌。
标签: c# .net bearer-token