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

时间:2014-10-28 09:09:35

标签: c# web-services wcf httprequest webservice-client

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

我在这里找到了相关的相关解决方案: Trying to run multiple HTTP requests in parallel, but being limited by Windows (registry) Trying to run multiple HTTP requests in parallel, but being limited by Windows (registry)

我的问题与此问题类似。

之前,我通过C#WinForms应用程序在我的机器上多次并行调用Web服务。 那时,使用ServicePointManager.DefaultConnectionLimit解决了我的问题。

现在,我的要求已经改变了。 还有另一个应用程序,现在只有1个网页的Web服务,由多个用户并行调用。此Web服务调用其他Web服务,因此我们有多个并行调用从Web服务器计算机发出。

我是Web中的菜鸟,所以我无法弄清楚我需要在Web服务上设置ServicePointManager.DefaultConnectionLimit。 (我在我的Winforms App中的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,因为这意味着在每次点击时重置它。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

只是一个想法伙计们,我可以把它放进去     protected void Application_Start(Object sender,EventArgs e){}?

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

无论如何,我可以确定这个WebService的起点吗? (来自项目属性还是WebServices中的默认属性?)