У меня есть приложение ASP/C# (4.0), которое было запущено на моей машине в течение нескольких дней. Судя по всему, в середине тестирования я получил эту ошибку. Приложение, похоже, «ждет» короткого периода, прежде чем выбросить ошибку. Я смог получить доступ к серверу с помощью SQL-Management/Web/RDC/Ping. Я пробовал iisreset, перерабатывал пул приложений и запускал/останавливал пул приложений. Ничто не избавилось от ошибки, пока я не перезагрузился. Я предполагаю, что это имеет какое-то отношение к пулу соединений, и я полагаю, что я делаю что-то неправильно. Эта проблема также повлияла на мини-i, которые VS запускает для отладки/etc.Ошибка фантома для подключения DB
В настоящее время я не могу повторить это, но я действительно ненавижу проблемы, которые «фиксируют себя». Поскольку в настоящее время это не может быть протестировано, я просто ищу направление, а некоторые идеи могут возникнуть снова.
Спасибо :-) информации
Исключение: Тип исключения: SqlException Сообщение об исключении: при установлении соединения с SQL Server произошла ошибка сети связанных или экземпляра конкретных. Сервер не найден или не был доступен. Проверьте правильность имени экземпляра и настройте SQL Server для удаленного подключения. (поставщик: поставщик Named Pipes, ошибка: 40 - не удалось открыть подключение к SQL Server) в System.Data.SqlClient.SqlInternalConnection.OnError (исключение исключений SqlException, логическое разрытие соединения) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () на System.Data.SqlClient.TdsParser.Connect (serverInfo serverInfo, SqlInternalConnectionTds connHandler, булевой ignoreSniOpenTimeout, Int64 timerExpire, булевой зашифровать, Boolean trustServerCert, Boolean integratedSecurity) в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (serverInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject) в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlCo nnectionString connectionOptions, TimeoutTimer тайм-аут) на System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject, TimeoutTimer тайм-аут, SqlConnectionString connectionOptions, струнного новый_пароль, булева redirectedUserInstance) в System.Data.SqlClient.SqlInternalConnectionTds..ctor (идентичности DbConnectionPoolIdentity, SqlConnectionString connectionOptions, Object providerInfo, String новый_пароль, SqlConnection owningObject, Boolean redirectedUserInstance) в System.Data.SqlClient.SqlConnectionFactory.CreateConnection (опции DbConnectionOptions, объект poolGroupProviderInfo, DbConnectionPool бассейн, DbConnection owningConnection) в System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection (DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions) в System.Data.P roviderBase.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 outerConnection, DbConnectionFactory ConnectionFactory) на System.Data.SqlClient.SqlConnection.Open() в MyApp.Default.BeginAsyncGetState (Object отправителя, EventArgs е, AsyncCallback cb, Состояние объекта) в C: ... \ Default.aspx.cs: строка 65 в System.Web.UI.Page.PageAsyncInfo.CallHandlersPossiblyUnderLock (Boolean onPageThread) на System.We b.UI.Page.PageAsyncInfo.CallHandlersCancellableCallback (состояние объекта) в System.Web.HttpContext.InvokeCancellableCallback (WaitCallback callback, состояние объекта) в 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();
}
}
}
}
Хотя очень информативный, я не думаю, что эта ссылка применяется. В нем говорится об изменении стороны SQL-сервера. Я знаю, что сервер работает правильно, поскольку другие компьютеры подключаются к нему совершенно нормально, и проблема была решена при перезагрузке. Другая интересная часть - мое веб-приложение работает отлично, а затем резко перестало работать, пока я его использовал. Я вошел в систему, вышел из системы и попытался войти в систему только для того, чтобы приветствовать эту ошибку. Я все еще давал +1, поскольку эта ссылка была полезной для кого-то. – Bengie