C# 两个ajax调用同时导致两个内部服务器错误

C# 两个ajax调用同时导致两个内部服务器错误,c#,ajax,asp.net-mvc,asp.net-mvc-3,jquery,C#,Ajax,Asp.net Mvc,Asp.net Mvc 3,Jquery,我有两个函数执行两个ajax调用。如果我调用一个函数而不是另一个函数 代码正常执行。但是如果我同时调用这两个,我会收到两条内部服务器错误消息。我想每个功能一个 这是我的代码: $(document).ready(function(){ CategoryChangeState(@Model.CatId , subcategoryId); SubategoryChangeState(@Model.SubcatId); }) public Ac

我有两个函数执行两个ajax调用。如果我调用一个函数而不是另一个函数 代码正常执行。但是如果我同时调用这两个,我会收到两条内部服务器错误消息。我想每个功能一个

这是我的代码:

   $(document).ready(function(){
         CategoryChangeState(@Model.CatId , subcategoryId);
         SubategoryChangeState(@Model.SubcatId);
    })
    public ActionResult ReturnListOfSubcategories( FormCollection collection ) {
            string categoryId = collection["result"];

            var subcategories = ProductManagerHelperClass.ReturnSubcategories(categoryId);
            return Json(subcategories);
    }
    public ActionResult ReturnListOfBrands() {

          var brands = ProductManagerHelperClass.ReturnBrands();
          return Json(brands);
    }
function CategoryChangeState(value ,  editPage) {
        .....
        $.ajax({
            type: "POST",
            url: "/ProductManager/ReturnListOfSubcategories",
            data: { result: value },
            datatype: "json",
            error: function (jqXHR, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
        ...
}

function SubategoryChangeState(value) {
         ....
         $.ajax({
            type: "POST",
            url: "/ProductManager/ReturnListOfBrands",
            datatype: "json",
            error: function (jqXHR, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });
       ....
}
为什么我会出现这些错误?我该如何解决

编辑

调试时,我发现在这部分代码中:

 public static Dictionary<string , string> ReturnSubcategories(string categoryId)
    {
        int catId = int.Parse(categoryId);

        var subcategories = (from s in dataContext.SubCategories
                             where s.CatId == catId
                             select new
                                        {
                                            s.SubCatId,
                                            s.SubCatName
                                        }).ToDictionary(x => x.SubCatId.ToString(), x => x.SubCatName);

        return subcategories;
    } 

同样,只有在调用这两个函数时才会引发此异常,这是因为您使用了一个静态类,在该类中您(可能)与数据库建立了连接。 发生以下情况:

  • 线程一进入静态类,就会打开一个连接
  • 同时,两个线程进入同一个类,并使用相同的开放连接
  • 线程1完成后,它关闭打开的连接
  • 线程2抛出一个错误,因为没有打开的连接

  • 如果不使用静态类来实例化数据库连接,则不会发生这种情况。

    实际的服务器错误是什么?
    InvalidOperationException ExecuteReader requires an open and available Connection. The connection's current state is closed.