需要通过另一个Web服务并行运行多个HTTP Web请求

本文关键字:Web 运行 请求 HTTP 并行 服务 另一个 | 更新日期: 2023-09-27 18:28:01

我需要通过另一个Web服务并行运行多个HTTP Web请求。

我在这里找到了一个相关的解决方案:尝试并行运行多个HTTP请求,但受到Windows(注册表)的限制试图并行运行多个HTTP请求,但受到Windows(注册表)的限制

我的问题和这个问题类似。

早些时候,我通过C#WinForms应用程序从我的机器并行调用Web服务多次。当时,使用ServicePointManager.DefaultConnectionLimit解决了我的问题。

现在,我的要求变了。还有另一个应用程序,它现在是一个只有一个网页的Web服务,由多个用户并行调用。这个Web服务调用另一个Web服务,所以我们有多个来自Web服务器机器的并行调用。

我是一个Web迷,所以我不知道在哪里需要在Web服务上设置ServicePointManager.DefaultConnectionLimit。(我是在Winforms应用程序的Main()中进行的。)

我的问题是在哪里指定ServicePointManager.DefaultConnectionLimit

Web服务没有Main(),它只有一个Global.asax,它主要包含代码片段和管道。

    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;
    public Global()
    {
        InitializeComponent();
    }   
    protected void Application_Start(Object sender, EventArgs e)
    { 
        AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        this.Initialise();
    }
    #region Web Form Designer generated code
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {    
        // 
        // Global
        // 
        this.Error += new System.EventHandler(this.Global_Error);
    }
    #endregion
    private void Global_Error(object sender, System.EventArgs e)
    {
        HandleLastError();
    }

    protected void Application_Error(Object sender, EventArgs e)
    {
        HandleLastError();
    }
    private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Exception unhandledException = (Exception)e.ExceptionObject;
        HandleException(unhandledException);
    }
    private void HandleLastError()
    {
        Exception lastError = Server.GetLastError();
        HandleException(lastError);
    }
    private static void HandleException(Exception exception)
    {
        Logger logger = new Logger(typeof(CreditCheck));
        string lastErrorMessage = (exception == null ? "No exception" : exception.Message);
        logger.Error(lastErrorMessage, exception);
    }

我的问题是在哪里指定ServicePointManager.DefaultConnectionLimit

只有一个.asmx(和.asmx.cs)文件,它只包含完成我工作的函数。该函数应该调用其他Web服务。每当Web服务被点击时(1秒内多次,大约10次),都会调用此函数,所以我不确定是否可以在此处指定ServicePointManager.DefaultConnectionLimit,因为这意味着每次点击时都会重置它。

此外,它托管在共享服务器上,所以我不想破坏注册表项的值,但我很乐意以编程方式进行更改

如有任何帮助,我们将不胜感激。

需要通过另一个Web服务并行运行多个HTTP Web请求

想一想,伙计们,我能把它放在protected void Application_Start(对象发送方,EventArgs e){}?

或者还有其他东西调用Application_Start()。

我是否可以确定这个WebService的起点?(从项目属性还是WebServices中的默认值?)