我有一个奇怪的问题。 让我一步一步详细解释:
我有一个供应商开发的REST WS(使用WCF制作)与MS CRM同步数据。
我开发了一个Windows服务,它从数据库中提取批量数据进行同步,然后使用Post方法作为JSON对象将它传递给这个Web服务。 Windows服务部署在其中一个节点上。
我面临的问题从来没有发生在Dev,QA,UAT或分期环境中。 它仅适用于生产环境。
在生产应用程序工作了一段时间,然后开始抛出400错误的请求错误。 然后,直到我们重新启动站点或重置应用程序池标识IIS不断抛出400错误的请求错误。 当我们重新启动网站或应用程序池时,相同的请求失败开始获得成功的答复。 它在这样的一段时间内工作,而且再次发生400次。
Web服务托pipe的环境是Win Server 2012,2节点负载平衡环境。 WS被部署在boht节点的端口8080上,并被configuration为在.Net 4.0下运行。
我在我的Windows服务日志(这是这些WS的客户端)中收到以下错误。
System.Net.WebException:远程服务器返回错误:(400)错误的请求。 在CrmWrapperWsHelper.cs中的SspToCrmSynchronizationService.Helpers.CrmWrapperWsHelper.CallService(String data,String url,String method,String userName,String password,String contentType):SspToCrmSynchronizationService.Helpers.CrmWrapperWsHelper.CallDocumentCreateService中的第79行(String data)CrmWrapperWsHelper.cs :第20行在SequentialProcess.cs中的SspToCrmSynchronizationService.Process.SequentialProcess.Process(List`1 appList,DatabaseHelper dbHelperForChildTask,CancellationToken ct)的CommonOperations.cs中的第52行:SspToCrmSynchronizationService.Process.CommonOperations.GenerateJsonAndInvokeDocCreateWS(Int64 appRefNo,Application app) 88行
首先,我们检查了IIS日志,发现IIS在几百个MS中返回了400错误。 我们怀疑它没有到达WS应用程序,因为应用程序根本没有logging任何东西,尽pipelogging请求是供应商在WS代码中做的第一件事情。
其次,我们使用Fiddler来捕获请求和响应,并得到以下结果:
HTTP/1.1 400 Bad Request Cache-Control: private Content-Length: 1647 Content-Type: text/html Server: Microsoft-IIS/8.5 X-ASpNet-Version: 4.0.30319 X-Powered-By: ASP.Net Date: Tue, 17 Oct 2017 07:14:26 GMT
2017-07-07 03:32:45 10.102.2.52 63726 10.102.2.52 8080 – – – – – Timer_ConnectionIdle –
2017-07-08 22:46:55 10.102.2.52 50916 10.102.2.52 8080 – – – – – Timer_ConnectionIdle – 2017-07-08 22:55:09 10.102.2.52 51004 10.102.2.52 8080 – – – – – Timer_ConnectionIdle –
基本上警告的细节如下:
124. MODULE_SET_RESPONSE_ERROR_STATUS ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="400", HttpReason="Bad Request", HttpSubStatus="0", ErrorCode="The operation completed successfully. (0x0)", ConfigExceptionInfo=""
我不知道是什么原因造成的(根本原因),以及如何解决这个问题,为什么它起初工作,一段时间后没有工作。 任何帮助将不胜感激。