HttpRequest事件接收到一些不标准的请求的时候,有时候会自己先抛出异常,而不是回复对方的请求有问题。这个导致自身不稳定
例如:
客户端用这个发送请求
Dim JJ As new jobject
JJ("EventCode") = "CustomerAddedOrChanged"
JJ("CustomerInfo") = “dfs Jo”
' 发送信息
Dim postData As String = CompressJson(JJ.Tostring)
Dim request As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(_WebhookSettings.URLToPostCustomerInfo), System.Net.HttpWebRequest)
request.Method = "POST"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
request.accept = "application/json"
request.ContentLength = byteArray.Length
request.Timeout = 3000 ' 3秒
Dim ReoToken As String ="asdfsadfgghfgd"
request.Headers.Add("Authorization", ReoToken) 'base64 加密
Dim dataStream As System.IO.Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As System.Net.HttpWebResponse = CType(request.GetResponse(), System.Net.HttpWebResponse)
Dim responseStream As System.IO.Stream = response.GetResponseStream()
Dim reader As New System.IO.StreamReader(responseStream, Encoding.UTF8)
Dim responseContent As String = reader.ReadToEnd()
Dim statusCode = response.StatusCode
responseStream.Close()
response.Close()
' **********
这段请求中,可能是缺少了contenttype头部信息吧。服务端总是抛出一个错误,然后才执行httprequest事件。
作为一个服务端应该要准备好接收各种错误请求,而不能因为对方的请求导致自己抛出自己的错误,应该要告诉对方你错了,而不是自乱阵脚。
服务端面对的是各种程序和浏览器的请求,要做得更坚强。
' **********
在上面这个请求中,服务端会在httpreques事件之前抛出如下异常信息:
Event/function:
Object reference not set to an instance of an object.
at Foxtable.RequestEventArgs.O.o.0oO.()