SMS HTTP API вызов из ASP.NET идет медленно
Для веб-приложения я создаю модуль SMS, который может отправлять SMS из приложения. У моего провайдера SMS есть API, который я могу вызвать через HTTP.
API вызывается через XmlTextReader, который просто читает XML-ответ от API.
Теперь моя проблема: когда я отправляю SMS с веб-страницы (по сути, просто делаю HTTP-запрос), получение SMS занимает более минуты.
Но когда я запускаю точно такой же код из консольного приложения Windows, мое SMS приходит менее чем за 5 секунд.
Я сделал несколько тестов с этим, и это не совсем мой провайдер SMS, который работает медленно. Почему-то HTTP-запрос задерживается из-за механизма ASP.NET, и он не задерживается напрямую из консольного приложения. Есть ли решение?
Вот как я называю HTTP API:
Dim strPostString As String = Convert.ToString(muriPostUrl) & mstrPostPath
If mblnUseSecureConnection Then
strPostString = Convert.ToString(muriSecurePostUrl) & mstrPostPath
End If
Dim strDataString As String = "username=" & mstrUsername
strDataString += "&" & "password=" & mstrPassword
strDataString += "&" & "originator=" & mstrOriginator
strDataString += "&" & "recipients=" & mstrRecipients
strDataString += "&" & "gateway=" & mstrGateway
strDataString += "&" & "reference=" & mstrReference
strDataString += "&" & "message=" & mstrMessage
If mstrType <> String.Empty Then
strDataString += "&" & "type=" & mstrType
End If
If mstrUDH <> String.Empty Then
strDataString += "&" & "udh=" & mstrUDH
End If
If Not mdtDeliveryDate = Nothing Then
Dim objDeliveryDate As New StringBuilder()
objDeliveryDate.Append(mdtDeliveryDate.Year)
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Month.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Day.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Hour.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Minute.ToString(), 2))
objDeliveryDate.Append(Prefix(mdtDeliveryDate.Second.ToString(), 2))
strDataString += "&" & "deliverydate=" & Convert.ToString(objDeliveryDate)
End If
Dim strReturnValue As String = ""
Dim xmlReader As New XmlTextReader(String.Format("{0}?{1}", strPostString, strDataString))
While xmlReader.Read()
If xmlReader.NodeType = XmlNodeType.Element Then
Select Case xmlReader.LocalName
Case "recipients"
If True Then
mintSuccessCount = Integer.Parse(xmlReader.ReadString())
strReturnValue += "recipients : " & mintSuccessCount.ToString() & vbCr & vbLf
Exit Select
End If
Case "success"
If True Then
mblnSuccess = Boolean.Parse(xmlReader.ReadString())
strReturnValue += "success : " & mblnSuccess.ToString() & vbCr & vbLf
Exit Select
End If
Case "resultcode"
If True Then
mintResultCode = Integer.Parse(xmlReader.ReadString())
strReturnValue += "resultcode : " & mintResultCode.ToString() & vbCr & vbLf
Exit Select
End If
Case "resultmessage"
If True Then
mstrResultMessage = xmlReader.ReadString()
strReturnValue += "resultmessage : " & mstrResultMessage & vbCr & vbLf
Exit Select
End If
End Select
End If
End While
Кроме того, при выполнении HTTP-запроса от ASP.NET он не отображается в Fiddler, в то время как фактический HTTP-запрос происходит. Как я могу отслеживать HTTP-возврат из механизма ASP.NET?
Я до сих пор не знаю, в чем проблема, но я обошел ее, выполнив обратную передачу через HttpWebRequest напрямую. Я думаю, что проблема была где-то в цикле.