首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

异步执行的有关问题(关于MultipleActiveResultSets的异常)

2012-02-22 
异步执行的问题(关于MultipleActiveResultSets的错误)程序文件*****************************************

异步执行的问题(关于MultipleActiveResultSets的错误)
程序文件     ************************************************
<%@   Page   Language= "VB "%>
<%@   Import   Namespace= "system.data "   %>
<%@   Import   Namespace= "system.data.sqlclient "   %>
<%@   Import   Namespace= "system.configuration "   %>

<script   runat= "server ">
    Protected   Sub   Page_Load(ByVal   sender   As   Object,   ByVal   e   As   System.EventArgs)
       
        Dim   conn   As   SqlConnection
        Dim   OCmd   As   SqlCommand   =   New   SqlCommand()
        Dim   CCmd   As   SqlCommand   =   New   SqlCommand()
        Dim   OrdersReader   As   SqlDataReader
        Dim   CustReader   As   SqlDataReader
        Dim   OASyncResult   As   IAsyncResult
        Dim   CASyncResult   As   IAsyncResult
       
        Dim   WHandles(1)   As   System.Threading.WaitHandle
        Dim   OrdersWHandle   As   System.Threading.WaitHandle
        Dim   CustWHandle   As   System.Threading.WaitHandle
       
        conn   =   New   SqlConnection()
        conn.ConnectionString   =   ConfigurationManager.ConnectionStrings( "DSN_NorthWind ").ConnectionString
       
        CCmd.CommandText   =   "select   *   from   Customers   where   CompanyName= 'Alfreds   Futterkiste '   "
       
        CCmd.CommandType   =   CommandType.Text
        CCmd.Connection   =   conn
       
        '   Selecting   all   orders   for   a   specific   customer
        OCmd.CommandText   =   "select   Customers.companyName,   Customers.contactName,   Orders.OrderID,   "   &   _
            "Orders.OrderDate,   Orders.requiredDate,   Orders.shippedDate   from   orders,   customers   where   "   &   _
            "   orders.CustomerID   =   customers.customerID   and   customers.companyName   =   'Alfreds   FutterKiste '   "   &   _
            "   order   by   Customers.CompanyName,   Customers.ContactName "
       
        OCmd.CommandType   =   CommandType.Text
        OCmd.Connection   =   conn
       
        conn.Open()
       
        '   Retrieving   customer   information   asynchronously
        CAsyncResult   =   CCmd.BeginExecuteReader()


       
        '   Retrieving   orders   list   asynchronously
        OASyncResult   =   OCmd.BeginExecuteReader()
       
        CustWHandle   =   CASyncResult.AsyncWaitHandle
        OrdersWHandle   =   OASyncResult.AsyncWaitHandle
       
        '   Filling   Wait   Handles   array   with   the   two   wait   handles   we   are   going   to   use   in   this   code
        WHandles(0)   =   CustWHandle
        WHandles(1)   =   OrdersWHandle
       
        System.Threading.WaitHandle.WaitAll(WHandles)
       
        CustReader   =   CCmd.EndExecuteReader(CASyncResult)
        OrdersReader   =   OCmd.EndExecuteReader(OASyncResult)
       
        gvCustomers.DataSource   =   CustReader
        gvCustomers.DataBind()
       
        gvOrders.DataSource   =   OrdersReader
        gvOrders.DataBind()
       
        conn.Close()
    End   Sub
</script>

<html   xmlns= "http://www.w3.org/1999/xhtml "   >
<head   runat= "server ">
        <title> Wait   All   Approach </title>
</head>
<body>
        <form   id= "form1 "   runat= "server ">
        <div>
        <asp:GridView   ID= "gvCustomers "   Width= "100% "   runat= "server "> </asp:GridView>
        <br   /> <br   />
        <asp:GridView   ID= "gvOrders "   Width= "100% "   AutoGenerateColumns= "false "   runat= "server ">
            <Columns>
            <asp:BoundField   HeaderText= "Company   Name "   DataField= "CompanyName "   />
            <asp:BoundField   HeaderText= "Contact   Name "   DataField= "ContactName "   />
            <asp:BoundField   HeaderText= "Order   Date "   DataField= "orderdate "   DataFormatString= "{0:d} "   />
            <asp:BoundField   HeaderText= "Required   Date "   DataField= "requireddate "   DataFormatString= "{0:d} "   />
            <asp:BoundField   HeaderText= "Shipped   Date "   DataField= "shippeddate "   DataFormatString= "{0:d} "   />
            </Columns>
        </asp:GridView>
        </div>
        </form>


</body>
</html>
    ************************************************

web.config中的连接   *******************************************
<connectionStrings>
    <add   name= "DSN_Northwind "   connectionString= "   Data   Source=(local);Initial   Catalog=Northwind;User   Id=sa;Password=password;   Asynchronous   Processing=true;   MultipleActiveResultSets=true "> </add>
</connectionStrings>
***********************************************************


错误提示   ************************************************
“/WebSite1”应用程序中的服务器错误。
--------------------------------------------

此连接不支持   MultipleActiveResultSets。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.InvalidOperationException:   此连接不支持   MultipleActiveResultSets。

源错误:  


行   42:          
行   43:           '   Retrieving   orders   list   asynchronously
行   44:           OASyncResult   =   OCmd.BeginExecuteReader()
行   45:          
行   46:           CustWHandle   =   CASyncResult.AsyncWaitHandle
 

源文件:   D:\work\dotNet\WebSite1\mars.aspx         行:   44  

堆栈跟踪:  


[InvalidOperationException:   此连接不支持   MultipleActiveResultSets。]
      System.Data.SqlClient.CachedAsyncState.SetActiveConnectionAndResult(DbAsyncResult   result,   SqlConnection   activeConnection)   +108
      System.Data.SqlClient.SqlCommand.InternalBeginExecuteReader(AsyncCallback   callback,   Object   stateObject,   CommandBehavior   behavior)   +302
      System.Data.SqlClient.SqlCommand.BeginExecuteReader(AsyncCallback   callback,   Object   stateObject,   CommandBehavior   behavior)   +95
      System.Data.SqlClient.SqlCommand.BeginExecuteReader()   +10
      ASP.mars_aspx.Page_Load(Object   sender,   EventArgs   e)   in   D:\work\dotNet\WebSite1\mars.aspx:44
      System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr   fp,   Object   o,   Object   t,   EventArgs   e)   +13
      System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object   sender,   EventArgs   e)   +45
      System.Web.UI.Control.OnLoad(EventArgs   e)   +80
      System.Web.UI.Control.LoadRecursive()   +49
      System.Web.UI.Page.ProcessRequestMain(Boolean   includeStagesBeforeAsyncPoint,   Boolean   includeStagesAfterAsyncPoint)   +3743

 


--------------------------------------------
版本信息:   Microsoft   .NET   Framework   版本:2.0.50727.42;   ASP.NET   版本:2.0.50727.210  
********************************************************


请问这个错误怎么处理,谢谢

[解决办法]
are you using SQL Server 2005?
[解决办法]
MultipleActiveResultSets is only supported by SQL Server 2005

热点排行