NSURLConnection请求REST WebService,状态代码为204

NSURLConnection请求REST WebService,状态代码为204,rest,iis-7,nsurlconnection,http-status-codes,Rest,Iis 7,Nsurlconnection,Http Status Codes,我有一个iOS应用程序,其中通过NSURLConnection发出REST Web服务请求。它在所有情况下都可以正常工作,除非服务(使用.NET-IIS7实现)没有要返回的数据。当没有数据时,响应显示状态204 OK,并且响应正文为空,但触发连接需要很长的时间(超过45-60秒):didReceiveResponse委托 我注意到在C#代码中,在这些情况下,状态代码显式设置为204,并返回“null”(我知道这本身是不正确的:204响应应该不返回任何内容,甚至不返回null) 使用Fiddler

我有一个iOS应用程序,其中通过
NSURLConnection
发出REST Web服务请求。它在所有情况下都可以正常工作,除非服务(使用.NET-IIS7实现)没有要返回的数据。当没有数据时,响应显示状态204 OK,并且响应正文为空,但触发
连接需要很长的时间(超过45-60秒):didReceiveResponse
委托

我注意到在C#代码中,在这些情况下,状态代码显式设置为204,并返回“null”(我知道这本身是不正确的:204响应应该不返回任何内容,甚至不返回null)

使用Fiddler调试此Web服务时,我发现一条警告,指出响应长度头字段(其值为“4”,可能来自“null”)与响应正文(当然是空的)之间不匹配

现在,当我停止将状态代码设置为204时,整个问题(NSURLConnection委托需要很长时间才能触发)都得到了解决,但奇怪的是,这只发生在我的生产环境中,而不是在临时环境中


对此有什么合理的解释吗?可能是某些IIS设置?

出于好奇,您是否在生产中使用SSL,而不是在登台中使用SSL?否,登台和生产都没有为此Web服务使用SSL。确定。我见过204处理的一些奇怪问题,但听起来你的问题完全不同。如果让我猜的话,内容长度可能是个问题。在此过程中,有些人看到了这一点,并可能试图从套接字(从未出现)读取数据,直到超时发生。至于环境中的差异,这更奇怪,但可能是某个地方的中间缓存代理导致了问题(不关闭套接字以便NSURLConnection等待),或者对NSURLConnection隐藏了问题。