2014-12-21 34 views
0

发生传输级错误如何解决以下错误在asp.net从服务器接收错误结果时,C#

"A transport-level error has occurred when receiving results from the server. (provider: Session Provider, error: 19 - Physical connection is not usable)"

这里是我的web.config代码:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <appSettings> 
    <add key="ChartImageHandler" value="storage=file;timeout=20;" /> 
    </appSettings> 
    <connectionStrings> 
    <add name="paconn" connectionString="Data Source=XYZ-PC;Initial Catalog=crm;MultipleActiveResultSets=True;User ID=sa;[email protected]" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <system.web> 
    <httpRuntime executionTimeout="60000" /> 
    <customErrors mode="Off" /> 
    <httpHandlers> 
     <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" /> 
    </httpHandlers> 
    <pages> 
     <controls> 
     <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     </controls> 
    </pages> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
     <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> 
    </authentication> 
    <membership> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
     </providers> 
    </membership> 
    <profile> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     </providers> 
    </profile> 
    <roleManager enabled="false"> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
     </providers> 
    </roleManager> 
    </system.web> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <remove name="ChartImageHandler" /> 
     <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </handlers> 
    <directoryBrowse enabled="false" /> 
    <defaultDocument> 
     <files> 
       <clear /> 
       <add value="Default.asp" /> 
       <add value="Default.htm" /> 
       <add value="index.htm" /> 
       <add value="index.html" /> 
       <add value="iisstart.htm" /> 
       <add value="default.aspx" /> 
       <add value="index.php" /> 
     </files> 
    </defaultDocument> 
    </system.webServer> 
</configuration> 

我的C#代码抛出错误:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 

public partial class autorefresh_create_emi : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["paconn"].ToString()); 
     con.Open(); 

     SqlCommand com1 = new SqlCommand("select max(f_casenum) from c_detail", con); 
     string check_max = com1.ExecuteScalar().ToString(); 

     if (check_max == "0") 
     { 
     } 
     else 
     { 
      string st_id = ""; 
      Int64 st = 0; 
      string max_id = ""; 
      Int64 en = 0; 

      SqlCommand com2 = new SqlCommand("select top 1(f_casenum) from c_emi where f_casenum not in (select top 1 (f_casenum) from c_detail order by f_casenum) order by f_casenum", con); 
      st_id = com2.ExecuteScalar().ToString(); 
      st_id = st_id.Substring(2); 
      st = Convert.ToInt64(st_id); 

      max_id = check_max; 
      max_id = max_id.Substring(2); 
      en = Convert.ToInt64(max_id); 

      for (Int64 i = st; i <= en; i++) 
      { 
       string f_casenum = "PA" + i; 
       string c_status = ""; 
       string f_tenure = ""; 

       SqlCommand com3 = new SqlCommand("select * from c_detail where [email protected]_casenum", con); 
       com3.Parameters.AddWithValue("@f_casenum", f_casenum); 

       SqlDataReader reader3 = com3.ExecuteReader(); 
       if (reader3.Read()) 
       { 
        f_tenure = reader3["f_tenure"].ToString().Trim(); 
        c_status = reader3["c_status"].ToString(); 
       } 

       if (c_status == "Full Paid") 
       { 
       } 
       else 
       { 
        string row_check = ""; 
        SqlCommand com4 = new SqlCommand("select count(f_invoice) from c_emi where [email protected]_casenum", con); 
        com4.Parameters.AddWithValue("@f_casenum", f_casenum); 
        row_check = com4.ExecuteScalar().ToString().Trim(); 

        if (f_tenure.Equals(row_check)) 
        { 
        } 
        else 
        { 
         string st_id_invoice = ""; 
         Int64 st_invoice = 0; 
         string max_id_invoice = ""; 
         Int64 en_invoice = 0; 

         SqlCommand com5 = new SqlCommand("select min(f_invoice) from c_emi where [email protected]_casenum", con); 
         com5.Parameters.AddWithValue("@f_casenum", f_casenum); 
         st_id_invoice = com5.ExecuteScalar().ToString(); 

         st_id_invoice = st_id_invoice.Substring(3); 
         st_invoice = Convert.ToInt64(st_id_invoice); 

         SqlCommand com6 = new SqlCommand("select max(f_invoice) from c_emi where [email protected]_casenum", con); 
         com6.Parameters.AddWithValue("@f_casenum", f_casenum); 
         max_id_invoice = com6.ExecuteScalar().ToString(); 

         max_id_invoice = max_id_invoice.Substring(3); 
         en_invoice = Convert.ToInt64(max_id_invoice); 

         for (Int64 j = st_invoice; j <= en_invoice; j++) 
         { 
          string invoice_date = ""; 
          string f_emi_due = ""; 
          string f_total_emi = ""; 
          string f_emi = ""; 
          string f_b_curr = ""; 

          string f_invoice = "PAI" + j; 
          string f_casenum1 = ""; 

          SqlCommand com7 = new SqlCommand("select * from c_emi where [email protected]_invoice", con); 
          com7.Parameters.AddWithValue("@f_invoice", f_invoice); 

          SqlDataReader reader7 = com7.ExecuteReader(); 
          if (reader7.Read()) 
          { 
           f_casenum1 = reader7["f_casenum"].ToString(); 
           f_emi = reader7["f_emi"].ToString(); 
           f_emi_due = reader7["f_emi_due"].ToString(); 
           f_total_emi = reader7["f_total_emi"].ToString(); 
           f_b_curr = reader7["f_b_curr"].ToString(); 
           invoice_date = reader7["invoice_date"].ToString(); 
          } 

          if (f_casenum == f_casenum1) 
          { 
           DateTime currr = DateTime.Now; 
           DateTime INDIAN_ZONE = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(currr, "India Standard Time"); 

           DateTime curr = INDIAN_ZONE; 
           string curr_invoicedate = curr.ToShortDateString(); 
           DateTime check_invoicedate = Convert.ToDateTime(invoice_date); 
           check_invoicedate = check_invoicedate.AddDays(30); 
           check_invoicedate = Convert.ToDateTime(check_invoicedate); 
           string exit_date = check_invoicedate.ToShortDateString(); 

           string f_emi_duedate = check_invoicedate.AddDays(10).ToShortDateString(); 
           string invoice_date1 = check_invoicedate.ToShortDateString(); 

           SqlCommand com8 = new SqlCommand("select f_casenum from c_emi where [email protected]_casenum and CONVERT(date,invoice_date,101)[email protected]_date", con); 
           com8.Parameters.AddWithValue("@f_casenum", f_casenum); 
           com8.Parameters.AddWithValue("@invoice_date", exit_date); 

           string check_exitdate = ""; 

           SqlDataReader reader8 = com8.ExecuteReader(); 
           if (reader8.Read()) 
           { 
            check_exitdate = reader8["f_casenum"].ToString(); 
           } 
           else 
           { 
           } 

           if (check_exitdate != "") 
           { 
           } 
           else 
           { 
            if (curr >= check_invoicedate) 
            { 
             string value = "0"; 
             string owner = ""; 
             string i_status = "Unlock"; 

             SqlCommand com9 = new SqlCommand("select MAX(f_invoice) from c_emi", con); 
             string maxid1 = com9.ExecuteScalar().ToString(); 

             string id1 = maxid1; 
             Int64 code = 100000000001; 
             string c = "PAI"; 

             if (id1.Substring(0, 1) != "P") 
             { 
              id1 = code.ToString(); 
              id1 = c + id1.ToString(); 
             } 
             else 
             { 
              id1 = id1.Substring(3); 
              Int64 a = Convert.ToInt64(id1); 
              a = a + 1; 
              id1 = c + a.ToString(); 
             } 
             id1 = id1.ToString(); 

             SqlCommand com11 = new SqlCommand("insert into c_emi values(@f_casenum,@f_b_amt,@f_emi,@f_emi_duedate,@f_invoice,@invoice_date,@f_overdue_amt,@f_emi_paid,@f_emi_due,@f_total_emi,@f_b_curr,@i_status,@owner,@convi_charges,@paidemi_date)", con); 

             SqlParameter obj1 = new SqlParameter("@f_casenum", DbType.StringFixedLength); 
             obj1.Value = f_casenum; 
             com11.Parameters.Add(obj1); 

             SqlParameter obj2 = new SqlParameter("@f_overdue_amt", DbType.StringFixedLength); 
             obj2.Value = value; 
             com11.Parameters.Add(obj2); 

             SqlParameter obj3 = new SqlParameter("@f_emi_paid", DbType.StringFixedLength); 
             obj3.Value = value; 
             com11.Parameters.Add(obj3); 

             SqlParameter obj4 = new SqlParameter("@f_emi_due", DbType.StringFixedLength); 
             obj4.Value = value; 
             com11.Parameters.Add(obj4); 

             SqlParameter obj5 = new SqlParameter("@f_total_emi", DbType.StringFixedLength); 
             obj5.Value = f_emi; 
             com11.Parameters.Add(obj5); 

             SqlParameter obj6 = new SqlParameter("@f_emi", DbType.StringFixedLength); 
             obj6.Value = f_emi; 
             com11.Parameters.Add(obj6); 

             SqlParameter obj7 = new SqlParameter("@f_emi_duedate", DbType.StringFixedLength); 
             obj7.Value = f_emi_duedate; 
             com11.Parameters.Add(obj7); 

             SqlParameter obj8 = new SqlParameter("@f_invoice", DbType.StringFixedLength); 
             obj8.Value = id1; 
             com11.Parameters.Add(obj8); 

             SqlParameter obj9 = new SqlParameter("@invoice_date", DbType.StringFixedLength); 
             obj9.Value = invoice_date1; 
             com11.Parameters.Add(obj9); 

             SqlParameter obj10 = new SqlParameter("@f_b_amt", DbType.StringFixedLength); 
             obj10.Value = f_b_curr; 
             com11.Parameters.Add(obj10); 

             SqlParameter obj11 = new SqlParameter("@f_b_curr", DbType.StringFixedLength); 
             obj11.Value = f_b_curr; 
             com11.Parameters.Add(obj11); 

             SqlParameter obj12 = new SqlParameter("@i_status", DbType.StringFixedLength); 
             obj12.Value = i_status; 
             com11.Parameters.Add(obj12); 

             SqlParameter obj13 = new SqlParameter("@owner", DbType.StringFixedLength); 
             obj13.Value = owner; 
             com11.Parameters.Add(obj13); 

             SqlParameter obj14 = new SqlParameter("@convi_charges", DbType.StringFixedLength); 
             obj14.Value = value; 
             com11.Parameters.Add(obj14); 

             SqlParameter obj15 = new SqlParameter("@paidemi_date", DbType.StringFixedLength); 
             obj15.Value = owner; 
             com11.Parameters.Add(obj15); 

             com11.ExecuteNonQuery(); 
            } 
            else 
            { 
            } 
           } 
          } 
          else 
          { 
          } 
         } 
        } 
       } 
      } 
     } 
     con.Close(); 
    } 
} 

在行

SqlDataReader reader7 = com7.ExecuteReader(); 

错误说明:

[SqlException (0x80131904): A transport-level error has occurred when receiving results from the server. (provider: Session Provider, error: 19 - Physical connection is not usable)] 
    System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +388 
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +815 
    System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +817 
    System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() +344 
    System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() +48 
    System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() +72 
    System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) +114 
    System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +950 
    System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +69 
    System.Data.SqlClient.SqlDataReader.get_MetaData() +134 
    System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6553981 
    System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +6556619 
    System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +586 
    System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +104 
    System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +288 
    System.Data.SqlClient.SqlCommand.ExecuteReader() +302 
    autorefresh_create_emi.Page_Load(Object sender, EventArgs e) in e:\phurti_crm\autorefresh_create_emi.aspx.cs:106 
    System.Web.UI.Control.LoadRecursive() +71 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178 

我使用ASP.Net与C#和数据库是SQL Server 2012的

+2

检查SQL Server错误日志。这可能表示连接已中断或服务器端存在问题,如访问冲突。 –

+0

检查SQL服务配置,是否基于TCP,命名管道等。,可能会有一些不同的设置,即阻塞连接。 –

+0

@ DanGuzman-SQLServerMVP如何检查SQL Server错误日志? – user3441151

回答

2

我决定使用

reader.Close(); 

感谢您的支持,这个问题。

相关问题