Я реализую службу AJAX, которая запускает длительный процесс и получает статус через setInterval Javascript. Полный код здесь http://blog.robseder.com/2013/10/18/executing-a-long-running-process-from-a-web-page/Код C# никогда не попадает (зависает) при развертывании в IIS
AjaxServices.asmx создает новый статический экземпляр моего рабочего класса. Рабочий класс обновляет свой прогресс. Проблема в том, что все работает так, как должно локально. Но он зависает и никогда не проходит мимо линии при развертывании на сервере. Я использую IIS 7.
using(SqlConnection conn = new SqlConnection(string))
using(SqlCommand command = conn.CreateCommand())
{
//...
if (conn.State != System.Data.ConnectionState.Open)
conn.Open()
}
AjaxServices.asmx/GetStatus работает отлично ... Она возвращает статус кружил ниже (HTTP 200). Проблема в том, что он не ударил мой Sql-код или блок try-catch вообще.
Код класса Worker Отрывок
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()))
{
UpdatePercent(6, 7, "Starting (inside USING)...", runId);
#region first step
using (SqlCommand command = conn.CreateCommand())
{
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "[dbo].[sp name]";
//parameters... etc...
UpdatePercent(7, 8, "Parameters added, connection state: " + connectionState, runId);
//code doesn't proceed past this line
if (conn.State != System.Data.ConnectionState.Open)
conn.Open();
UpdatePercent(5, 10, "about to enter try-catch...", runId);
try
{
UpdatePercent(5, 10, "Starting run insertion...", runId);
command.ExecuteNonQuery();
runId = int.Parse(command.Parameters["@RunID"].Value.ToString());
UpdatePercent(10, 15, "Inserted run dimension...", runId);
}
catch(SqlException exc)
{
UpdatePercent(100, 100, exc.Message, runId);
}
}
Если соединение изначально закрыто, то что должно его открыть? Это было бы ложно, так как государство закрыто. –
Висит ли это, или это исключение? Моя кишка сказала бы, что это последняя. –
@JBKing Извините, я имел в виду 'conn.State! = Open' ... @ Майкл Гюнтер, он висит. В противном случае блок 'catch' будет' UpdatePercent' соответствующим образом. – Kyle