如何设置超时 API SOAP Web 服务 ASP.NET C#

问题描述 投票:0回答:1

有两个应用程序通过 Web 服务进行通信以传输 XML。

应用程序“A”发送请求(您好,我想要 XML),应用程序“B”为应用程序 A 创建 XML。

然而,应用程序 B 有时需要 2 分钟来创建 XML,据我目前的研究,Web 服务的标准超时为 90 秒,而应用程序 A 从未收到 XML。

因此应用程序 A 的开发人员增加了超时时间 至 3 分钟(180000),见下文:

public GetData GetSO(Envelope request)
{
    try
    {
        HttpWebRequest client = (HttpWebRequest)WebRequest.Create(_urlGetSO);
        client.Method = 'Post';
        HttpWebResponse response;
        client.Timeout = 180000; 
        // ....
    }
    catch (Exception ex)
    {
        // ...
    }
}        

但问题仍然存在,有什么办法吗?

c# asp.net soap webservice-client
1个回答
0
投票

要在 ASP.NET C# 中使用 HttpClient 设置 SOAP Web 服务调用的超时,可以使用 HttpClient.Timeout 属性,该属性指定请求超时之前等待的最长时间。 此外,您还可以设置 HttpClient.ReadTimeout 和 HttpClient.WriteTimeout 属性,它们分别用于读取和写入操作。以下是设置这些超时的方法:

using System;
using System.Net.Http;

class Program
{
    static async System.Threading.Tasks.Task Main(string[] args)
    {
        // Create an instance of HttpClient
        HttpClient client = new HttpClient();

        // Set the timeout for the entire request (including both sending and receiving)
        client.Timeout = TimeSpan.FromSeconds(30); // for example, 30 seconds timeout

        // Set the timeout for reading data from the server
        client.ReadTimeout = TimeSpan.FromSeconds(20); // for example, 20 seconds timeout

        // Set the timeout for writing data to the server
        client.WriteTimeout = TimeSpan.FromSeconds(20); // for example, 20 seconds timeout

        // Make the SOAP web service call
        try
        {
            HttpResponseMessage response = await client.GetAsync("http://your-soap-service-url");
            // Process the response as needed
        }
        catch (HttpRequestException ex)
        {
            // Handle timeout or other errors
        }
    }
}

在此示例中:

  • client.Timeout设置整个请求允许的最大时间
    (发送和接收)。

  • client.ReadTimeout设置允许读取数据的最大时间 来自服务器。

  • client.WriteTimeout设置允许写入数据的最大时间
    到服务器。调整超时值(Timeout、ReadTimeout、
    WriteTimeout)根据您的要求。

记住要处理由于超时或其他错误而可能发生的任何潜在的 HttpRequestException。

© www.soinside.com 2019 - 2024. All rights reserved.