【问题标题】:HttpWebRequest Timeout updating status Code in BigCommerceBigCommerce 中的 HttpWebRequest 超时更新状态代码
【发布时间】:2020-12-30 16:56:05
【问题描述】:

如果不是所有的帖子,我已经阅读了很多关于 Web 请求超时的帖子,并且提供的解决方案没有奏效。我从 Big Commerce 获得订单,然后更新 Big Commerce 状态代码。我可以更新 2 个订单,然后在第三个时超时,无论是星期几或一天中的时间,每次都超时。

App.Config 文件有:

```
<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>
```

代码:

```
    Try
        Dim strJSON As String = "{""status_id"": 9}"
        Dim postBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(strJSON)
        For i As Integer = 0 To dto.Rows.Count - 1
            strWebOrder = dto.Rows(i).Item("WebOrder")
            Dim strHttp As String = "https://api.bigcommerce.com/stores/storeid/v2/orders/" & strWebOrder
            Dim request As HttpWebRequest = DirectCast(WebRequest.Create(strHttp), HttpWebRequest)
            request.Accept = "application/json"
            request.ContentType = "application/json"
            request.Headers("X-Auth-Token") = strAuthToken
            request.Timeout = 10000
            request.AllowWriteStreamBuffering = False
            request.SendChunked = True
            request.Method = "PUT"
            Dim postStream As Stream = request.GetRequestStream()
            postStream.Write(postBytes, 0, postBytes.Length)
            Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
            If response.StatusCode = 200 Then
                strErrorRef = "Web " & strWebOrder
                strErrorReason = "Order Status Changed to Exported"
                strPutMessage = ""
                WriteError()
            Else
                strErrorRef = "Web " & strWebOrder
                strErrorReason = "Unable to change Web Order Status to Exported"
                strPutMessage = ""
                WriteError()
            End If
        Next
    Catch ex As Exception
        strErrorRef = "Web " & strWebOrder
        strErrorReason = "Unable to change Web Order Status to Exported"
        strPutMessage = (ex.ToString)
        WriteError()
    End Try
```

【问题讨论】:

    标签: bigcommerce system.web httpruntime


    【解决方案1】:

    您是否尝试过增加 executionTimeout 属性中的秒数?如果将其增加到 300,这将使您的应用程序在关闭前有 5 分钟执行命令,而不是您当前使用的 3 分钟。

    我不确定您尝试或阅读的所有内容,但听起来您的代码至少需要 2-3 分钟才能完成 2 个订单,所以这就是您看到的结果相同的原因不管它在一天中的什么时间被执行。

    您是否尝试过重构代码以将其分解一下,例如: 在一个函数中获取所有 status_id 为 9 的订单或 将这些 order_id 存储在另一个函数的数组中,然后在一个新函数中循环通过存储的数组来更新 status_id?

    另外,您是否在使用 webhook?

    【讨论】:

    • 我使用的超时设置我知道它们设置为推荐的最大值。前两个更新几乎立即发生。超时仅在第 3 次更新时发生。在其他代码中,我从网站获取处于特定状态代码的所有订单。我将订单写入 dto 表。我正在遍历表格以将状态更改为 9。我对网络挂钩的理解有限,但从我在 Big Commerce 文档中阅读的内容来看,如果网站上的状态发生更改,它们可以用来通知我。我没有看到它会有什么帮助。谢谢。
    • @Susan 是的,如果商店有太多 api 调用,您可能会超时。就像你达到 api 限制一样。这也可能与您正在运行的任何应用程序有关。您可以通过此处的合作伙伴门户:partners.bigcommerce.com/English 或打开支持票以获得有关此动手操作的帮助。您可以与我们的 24/7 技术支持团队合作,为您的商店提供一对一的帮助。通过实时聊天与他们联系,或随时拨打此处列出的任何国际免费电话号码:support.bigcommerce.com/s/#contact
    • 谢谢,我会这样做的。
    • 如果您一直达到速率限制,我会感到惊讶!请记住:“商店的整体配额分布在给定时间访问商店的所有应用程序中。”,您可以在响应标头中检查您的表现(X-Rate-Limit-Requests-Left)跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    相关资源
    最近更新 更多