2017-03-02 42 views
0

当我为应用程序创建的Web API调用Web API时,出现奇怪的错误。 GET请求通过并返回他们应该的所有数据,但我的POST/PUT命令都返回502,特别是从MVC应用程序返回。我可以从Postman调用API并获得正确的响应,并在数据库中创建对象。502错误的网关在POST/PUT Web API调用ASP.NET核心MVC

502 - Web服务器收到无效响应,同时充当 网关或代理服务器。您正在寻找的页面有问题,并且无法显示。当Web服务器( 充当网关或代理服务器)联系上游内容服务器时,它从内容服务器收到无效响应 。

我冒充集成Windows登录为所有Web请求的API下面的代码:

async Task Action() 
{ 
    response = await _service.CreateIncident(model); 
} 

await WindowsIdentity.RunImpersonated(identity.AccessToken, Action); 

CreateIncident(模型):

using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true })) 
     { 
      var newIncident = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"); 
      var response = await client.PostAsync(hostUri, newIncident); 
      return response; 
     } 

还有一个GET请求我通过Ajax创建了一个递增的ID以显示给用户,然后他们创建了新的事件,并返回502 Bad Gateway。这是一个IIS设置是不正确的?

+0

newIncident字符串是否超过255个字符? – Sparrow

+0

命令通过服务器很好(我没有意识到这实际上发生了,我可能已经改变了一些东西,实际上开始工作,并没有意识到它......),但我仍然得到一个502坏当我尝试在PUT/POST请求后重定向用户时(例如,用户创建对象,然后指向该对象的GET页面),网关出错。 –

回答

0

如果使用WindowsIdentity.RunImpersonated和异步函数,它将不起作用。执行非GET请求时必须同步。我已经更新了我的GitHub问题,我希望能够解决这个问题。如果你是这个话题的未来访问者,你可以看到这个结果是here

0

我认为这也取决于数据的大小。小包装可以工作,大包装不能。

相关问题