IIS上的asp.net web api为远程POST调用返回500,但在本地返回201(确定)

IIS上的asp.net web api为远程POST调用返回500,但在本地返回201(确定),asp.net,iis-7.5,asp.net-web-api,Asp.net,Iis 7.5,Asp.net Web Api,我有一个ASP.NETWebAPI代码运行在.NET4.5上,带有MVC4.0RC和EF5.0预发行版。 这是在IIS 7.5、Win server 2008 R2数据中心上运行的 现象如下: 在本地调用POST到本地主机(在IIS上)时,一切正常,我将被重定向到创建的对象作为响应页面(在响应标题中设置),状态为201。 但是当从外部URL调用时,我没有得到响应。代码运行良好,没有例外,但在chrome开发者工具中,我看不到任何回复。它说请求已被取消。 不管我怎么做,都解决不了这个问题。同一II

我有一个ASP.NETWebAPI代码运行在.NET4.5上,带有MVC4.0RC和EF5.0预发行版。 这是在IIS 7.5、Win server 2008 R2数据中心上运行的

现象如下:

在本地调用POST到本地主机(在IIS上)时,一切正常,我将被重定向到创建的对象作为响应页面(在响应标题中设置),状态为201。

但是当从外部URL调用时,我没有得到响应。代码运行良好,没有例外,但在chrome开发者工具中,我看不到任何回复。它说请求已被取消。

不管我怎么做,都解决不了这个问题。同一IIS文件夹上完全相同的代码可以从本地调用运行,但对于远程调用,则不返回任何内容。这发生在两个不同的控制器上

但是,其他调用(例如Get)对本地和远程调用都很有效

这是构建响应的POST方法中的控制器代码:

HttpResponseMessage response = this.Request.CreateResponse<Movie>(HttpStatusCode.Created, Movie);
string uri = Url.Route(null, new { id = Movie.Id });
response.Headers.Location = new Uri(Request.RequestUri, uri);
return response;
httpresponsemessageresponse=this.Request.CreateResponse(HttpStatusCode.Created,Movie);
字符串uri=Url.Route(null,新的{id=Movie.id});
response.Headers.Location=新Uri(Request.RequestUri,Uri);
返回响应;
非常感谢你的帮助


谢谢

在这种情况下,很难用您提供的信息来确定问题所在。尝试从应用程序中获取尽可能多的错误详细信息。如果错误在IIS级别,请启用失败的请求跟踪,并查看生成的跟踪日志。您好,我将其打开,最终显示返回的响应状态代码为200。这真的很奇怪。我知道请求在代码中不会失败,因为我知道对象已经创建,代码运行良好。IIS会报告200,但浏览器不会得到响应,这有什么意义吗?(同样,仅在调用外部IP地址的情况下。在Localhost中,它可以正常工作)尝试使用fiddler发送请求,您是否再次获得500?因此,似乎在执行外部请求时,所有3个浏览器(Chrome、FF、IE8)在发送请求的同一JQUERY页面上的行为都不同:Chrome显示失败,FF显示它正常(201-已创建),但不显示响应数据,IE写入一些“无传输”错误。在IE上,Fiddler甚至不显示已启动的请求。在其他两方面都是如此。所以这就变成了一个纯粹的IIS问题:为什么不同的浏览器对相同的简单请求/响应数据表现完全不同?您找到了这个解决方案吗。?事实上,这让我陷入了困境。在这种情况下,你提供的信息很难找出问题所在。尝试从应用程序中获取尽可能多的错误详细信息。如果错误在IIS级别,请启用失败的请求跟踪,并查看生成的跟踪日志。您好,我将其打开,最终显示返回的响应状态代码为200。这真的很奇怪。我知道请求在代码中不会失败,因为我知道对象已经创建,代码运行良好。IIS会报告200,但浏览器不会得到响应,这有什么意义吗?(同样,仅在调用外部IP地址的情况下。在Localhost中,它可以正常工作)尝试使用fiddler发送请求,您是否再次获得500?因此,似乎在执行外部请求时,所有3个浏览器(Chrome、FF、IE8)在发送请求的同一JQUERY页面上的行为都不同:Chrome显示失败,FF显示它正常(201-已创建),但不显示响应数据,IE写入一些“无传输”错误。在IE上,Fiddler甚至不显示已启动的请求。在其他两方面都是如此。所以这就变成了一个纯粹的IIS问题:为什么不同的浏览器对相同的简单请求/响应数据表现完全不同?您找到了这个解决方案吗。?事实上,我被这个困住了。。