VS Web Test根据ASP.NET Core API收到415

时间:2018-11-01 14:06:13

标签: visual-studio web-testing

我一直在使用Postman测试我的API(ASP.NET Core 2.1),没有任何问题。我想启动一个负载测试,但无论如何尝试,都无法通过负载测试的第一步,得到415。当我获取请求详细信息并将其插入Postman时,请求运行正常。

Web测试请求详细信息:

POST / HTTP/1.1
Host : dev.api.chat.users.com
Content-Type : application/json
X-ConsumerId : D8493DB5-E231-E811-80C2-00155DC33B49
Accept-Encoding : GZIP
Accept : */*
User-Agent : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept-Language : en-US
Content-Length : 46
Connection : Keep-Alive
Expect : 100-continue
{ "username": "loadTestUser-PcRy6an M3as" }

邮递员(正在工作):

POST / HTTP/1.1
Host: dev.api.chat.users.com
Content-Type: application/json
X-ConsumerId: D8493DB5-E231-E811-80C2-00155DC33B49
Accept-Encoding: GZIP
Accept: */*
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept-Language: en-US
Content-Length: 46
Connection: Keep-Alive
Expect: 100-continue
cache-control: no-cache
Postman-Token: e1dc56bb-1828-41ec-b920-6f53fbc7e84d
{ "username": "loadTestUser-PcRy6an M3as" }------WebKitFormBoundary7MA4YWxkTrZu0gW--

不确定邮递员为什么不跨边界而抛出该边界,但我怀疑这是一个问题,因为它可以在邮递员中使用。

2 个答案:

答案 0 :(得分:0)

嗯,那是一个短暂的问题。幸运的是,我进行了App Insights并进行了跟踪。看着那,我发现Web测试不是发送内容类型application / json,而是发送text / xml。我必须转到Web测试的“字符串正文”节点,然后在“属性”窗口中将“内容类型”手动设置为application / json。

答案 1 :(得分:0)

调用Get api时,我也收到415错误。经过多次尝试和实验,我发现如果从参数列表中删除CancellationToken,它将得到解决。

BROKEN(已收到415状态代码):

[Route("api/[controller]")]
[ApiController]
public class SomeController : ControllerBase 
{
    [HttpGet()]
    public async Task<ActionResult<SomeResult>> GetAsync(string id, CancellationToken token)
    ...

固定电话:

    public async Task<ActionResult<SomeResult>> GetAsync(string id)

现在我不知道为什么会这样。我遇到的问题是在带有Kestrel服务器的ASP.NET Core 2.2.7中。