У меня есть приложение ASP / C # (4.0), которое работало на моей машине в течение нескольких дней. Внезапно, в середине тестирования я получил эту ошибку. Приложение, похоже, "подождет" небольшой промежуток времени, прежде чем выдать ошибку. Я смог получить доступ к серверу через SQL-Management / Web / RDC / Ping просто отлично. Я попробовал iisreset, переработав пул приложений и запустив / остановив пул приложений. Ничего не избавляло от ошибки, пока я не перезагрузился. Я предполагаю, что это как-то связано с пулом соединений, и я полагаю, что я делаю что-то не так. Эта проблема также коснулась мини-iis, который VS запускает для отладки / и т. Д.
В настоящее время я не могу, чтобы это повторилось, но я действительно ненавижу проблемы, которые "исправляются". Так как это в настоящее время не может быть проверено, я просто ищу направление и некоторые идеи, если оно придет снова.
Спасибо: -)
Информация об исключении:
Тип исключения: SqlException
Сообщение об исключении: при установлении соединения с SQL Server произошла ошибка сети или экземпляра. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)
в System.Data.SqlClient.SqlInternalConnection.OnError (исключение SqlException, логическое breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ()
в System.Data.SqlClient.TdsParser.Connect (ServerInfo serverInfo, SqlInternalConnectionTds connHandler, логическое ignoreSniOpenTimeout, Int64 timerExpire, логическое шифрование, логическое доверие trustServerCert, логическое интегрированное обеспечение безопасности)
в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo serverInfo, String newPassword, логическое значение ignoreSniOpenTimeout, тайм-аут TimeoutTimer, SqlConnection owningObject)
в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (ServerInfo serverInfo, String newPassword, логическое значение redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, время ожидания TimeoutTimer)
в System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, логический redirectedUserInstance)
в System.Data.SqlClient.SqlInternalConnectionTds..ctor (идентификатор DbConnectionPoolIdentity, SqlConnectionString connectionOptions, объект providerInfo, строка newPassword, SqlConnection owningObject, логический redirectedUserInstance)
в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (параметры DbConnectionOptions, объект poolGroupProviderInfo, пул DbConnectionPool, DbConnection owningConnection)
в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnection owningConnection, пул DbConnectionPool, параметры DbConnectionOptions)
в System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject)
в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject)
в System.Data.ProviderBase.DbConnectionPool.GetConnection (DbConnection owningObject)
в System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection)
в System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection externalConnection, DbConnectionFactory connectionFactory)
в System.Data.SqlClient.SqlConnection.Open ()
в MyApp.Default.BeginAsyncGetState (Отправитель объекта, EventArgs e, AsyncCallback cb, Состояние объекта) в C: ... \ Default.aspx.cs: строка 65
в System.Web.UI.Page.PageAsyncInfo.CallHandlersPossblyUnderLock (Boolean onPageThread)
в System.Web.UI.Page.PageAsyncInfo.CallHandlersCancellableCallback (состояние объекта)
в System.Web.HttpContext.InvokeCancellableCallback (обратный вызов WaitCallback, состояние объекта)
at System.Web.UI.Page.PageAsyncInfo.CallHandlers (Boolean onPageThread)
public partial class Default : System.Web.UI.Page
{
SqlCommand _sqlCMD;
SqlConnection _sqlConn = null;
protected void Page_Load(object sender, EventArgs e)
{
String strStateCode = Request.QueryString["State"] ?? String.Empty;
if (!Page.IsPostBack || !(Session["vchCurrentStateID"] ?? String.Empty).Equals(strStateCode))
{
AddOnPreRenderCompleteAsync(
new BeginEventHandler(BeginAsyncGetState),
new EndEventHandler(EndAsyncGetState)
);
}
}
protected IAsyncResult BeginAsyncGetState(object sender, EventArgs e, AsyncCallback cb, object state)
{
String ConString = System.Configuration.ConfigurationManager.ConnectionStrings["ReportServer"].ConnectionString;
_sqlConn = new SqlConnection(ConString);
_sqlCMD = new SqlCommand();
SqlDataReader myReader = null;
_sqlCMD.Connection = _sqlConn;
_sqlCMD.CommandType = CommandType.StoredProcedure;
String strStateCode = Request.QueryString["State"] ?? String.Empty;
IAsyncResult tmpResult = null;
try
{
_sqlConn.Open();
_sqlCMD.CommandText = "dbo.StateLevel_gState";
_sqlCMD.Parameters.AddWithValue("@vchShortCode", strStateCode);
tmpResult = _sqlCMD.BeginExecuteReader(cb, state);
}
catch (Exception ex)
{
if (_sqlConn != null)
_sqlConn.Close();
if (_sqlCMD != null)
_sqlCMD.Dispose();
if (myReader != null)
myReader.Dispose();
throw;
}
return tmpResult;
}
void EndAsyncGetState(IAsyncResult ar)
{
try
{
using (SqlDataReader myReader = _sqlCMD.EndExecuteReader(ar))
{
if (myReader.Read())
{
lblStateName.Text = myReader.GetString(1);
Session["iCurrentStateID"] = myReader.GetInt32(0);
Session["vchCurrentStateID"] = Request.QueryString["State"];
Session["vchReportLocation"] = myReader.GetString(3);
}
else
{
lblStateName.Text = "Invalid State";
}
}
}
finally
{
if (_sqlConn != null)
_sqlConn.Close();
if (_sqlCMD != null)
{
_sqlCMD.Dispose();
}
}
}
}