需要通过另一个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,因为这意味着每次点击时都会重置它。
此外,它托管在共享服务器上,所以我不想破坏注册表项的值,但我很乐意以编程方式进行更改
如有任何帮助,我们将不胜感激。
想一想,伙计们,我能把它放在protected void Application_Start(对象发送方,EventArgs e){}?
或者还有其他东西调用Application_Start()。
我是否可以确定这个WebService的起点?(从项目属性还是WebServices中的默认值?)