我有一个iOS应用程序,从我的服务器上下载文件。 最近,我将服务器从Windows Server 2012升级到Windows Server 2016.突然升级后,我的iOS应用程序开始无法从新服务器下载文件。
当升级我的服务器时,我也更改了我的SSL证书并开始使用Wilcard SSL证书。 这就是为什么我认为一些SSL问题是原因。 但是当我尝试在旧的服务器上,我看到我的应用程序下载文件从我的旧服务器没有问题。
然后我以为我的服务器正在丢包。 当我testing了大约9000个数据包后,我只看到一个数据包丢失; 所以情况并非如此。
然后我想可能是在IIS中导致连接丢失的失败。 当我testing它(IIS失败的请求日志)时,我没有看到任何问题。
当我debuggingiOS应用程序时,我看到以下日志。 这看起来像关于HTTP的问题。
任何想法,为什么我只在IIS 10上面临问题?
以前的OS&ISS版本: Windows Server 2012(Build 9200)/ IIS 8(8.0.9200.16384)
以前的OS&ISS版本: Windows Server 2016(1607 – Build 1493.1593)/ IIS 10(10.0.14393.0)
iOS应用程序联网库: AFNetworking
iOS错误日志:
[] nw_socket_set_receive_low_water_mark setsockopt SO_RCVLOWAT 3537 fd 28失败:[22]无效参数
[] nw_endpoint_handler_add_write_request [49.1 MyIP:443失败的套接字stream(满足)]不能接受写请求
[] tcp_connection_write_eof_block_invoke写closurescallback收到错误:[22]无效参数
这完全是关于在IIS 10上默认的HTTP / 2。没有选项可以closures它,但我使用以下registry项在服务器上完全closures它。 现在我的文件从iOS下载没有问题。
当然,我必须在iOS上解决这个问题,让它通过HTTP / 2下载文件,但现在它正在工作。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters EnableHttp2Tls REG_DWORD 0 EnableHttp2Cleartext REG_DWORD 0