1

Webアプリケーションの場合、アプリケーションからSMSを送信できるSMSモジュールを作成しています。私のSMSプロバイダーには、HTTP経由で呼び出すことができるAPIがあります。

APIは、APIからXML応答を読み取るだけのXmlTextReaderを介して呼び出されます。

今私の問題は次のとおりです。WebページからSMSを送信する場合(基本的にはHTTPリクエストを実行するだけです)、SMSを受信するまでに1分以上かかります。

しかし、Windowsコンソールアプリケーションからまったく同じコードを実行すると、SMSが5秒以内に届きます。

私はこれを使って複数のテストを行いましたが、遅いのは実際には私のSMSプロバイダーではありません。どういうわけか、HTTP要求はASP.NETエンジン内から遅延し、コンソールアプリケーションから直接遅延することはありません。解決策はありますか?

これは私がHTTPAPIを呼び出す方法です:

 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

また、ASP.NETからHTTP要求を実行する場合、実際のHTTP要求が発生している間は、 Fiddlerには表示されません。ASP.NETエンジン内からHTTPファストバックを追跡するにはどうすればよいですか?

問題が何であるかはまだわかりませんが、HttpWebRequestを介して直接ポストバックを実行することで回避しました。問題はwhileループのどこかにあったと思います。

4

0 に答える 0