C# Com对象方法在asp.net核心中被阻止,但在单元测试中未被阻止

C# Com对象方法在asp.net核心中被阻止,但在单元测试中未被阻止,c#,asp.net-core,com,C#,Asp.net Core,Com,我有一个类,用来包装一个com对象(MLApp),用于调用matlab。我有一个单元测试,初始化5个matlab会话,并在每个会话中运行一个暂停10秒的命令。我的单元测试运行大约需要10秒,这是预期的,因为它们应该并行执行 [Test] public void ParallelExecution() { List<MatlabRunner> runners = new List<MatlabRunner>(); for (int i = 0; i <

我有一个类,用来包装一个com对象(MLApp),用于调用matlab。我有一个单元测试,初始化5个matlab会话,并在每个会话中运行一个暂停10秒的命令。我的单元测试运行大约需要10秒,这是预期的,因为它们应该并行执行

[Test]
public void ParallelExecution()
{
    List<MatlabRunner> runners = new List<MatlabRunner>();
    for (int i = 0; i < 5; i++)
    {
        runners.Add(new MatlabRunner());
    }

    try
    {
        List<Task<string>> t = new List<Task<string>>();
        foreach (MatlabRunner r in runners)
             t.Add(Task.Run<string>(()=>r.Execute( "pause(10)" )));

        Task<string>.WaitAll(t.ToArray());

        t.ForEach((task) => System.Console.WriteLine(task.Result));

    }
    finally
    {
        runners.ForEach((r)=>r.Quit());
    }
}
问题是我向这个验证方法发出了两个并行GET请求。当一个请求调用
runner.Execute(“暂停(10)”)
时,另一个请求被阻止调用此方法。我希望并行地对这个Verify方法进行两次调用,并并行执行,总共在10秒钟内完成。但是,两个请求完成都需要20秒(第一个10秒,第二个10秒)。在我的单元测试中,我使用任务并行调用相同的方法,整个单元测试在10秒内执行,尽管启动了5个运行程序。如果我在web服务中也这样做,则需要50秒。希望这是足够的信息。如果有价值的话,我可以附上一个带有时间戳的日志来显示事情是如何执行的


从IIS的配置角度来看,我是否遗漏了一些内容?当我构建或发布时,可能会发生什么

你能修改你的问题来澄清问题吗?我读了好几遍,我无法确定问题出在哪里is@CamiloTerevinto当然,我已经添加了上面的编辑。谢谢,这样更清楚了。我想知道你是如何调用这个端点的?我是通过打开两个不同的浏览器并在每个浏览器中放置URL来发出请求的。
[HttpGet("Verify")]
public JsonResult Verify(String lot = null,String lotStatus = null,int? NumPorts = null,int? wafer = null)
{
    System.IO.File.AppendAllText(@"C:\Logs\log.txt", "\n\Received Request! " + System.DateTime.Now + "\n");

    String command = "pause(10)";
    MatlabRunner runner = null;
    String result = "";
    try
    {
      runner = new MatlabRunner();
        result = runner.Execute(command);
    }
    catch(Exception e)
    {
        System.IO.File.AppendAllText(@"C:\Logs\log.txt", e.StackTrace + " " + e.InnerException + " " + e.GetType() + e.Source + " " + e.GetBaseException());
    }
    finally
    {
        runner.Quit();
        System.IO.File.AppendAllText(@"C:\Logs\log.txt", "\nQuit! " + System.DateTime.Now + "\n");
    }
    return new JsonResult(result);
}