Как передать HttpContext дочерним потокам в функции асинхронного опросаC#

Место общения программистов C#
Ответить
Anonymous
 Как передать HttpContext дочерним потокам в функции асинхронного опроса

Сообщение Anonymous »

Я выполнил аналогичные запросы о том, что HttpContext.Current становится нулевым в асинхронных методах.
Согласно этому сообщению -> HttpContext.Current имеет значение null в асинхронном обратном вызове, HttpContext недоступен в асинхронных функциях (дочерних потоках).
Я реализовал асинхронный опрос в своей функции, моя вызываемая функция использует объект HttpContext, который принимает значение null. . Может кто-нибудь показать мне, как передать HttpContext в дочерний поток.
delegate DataSet MethodDelegate(SqlParameter[] paramFilterScreenCreate);

public DataSet Call()
{
dtFilter = ExecutePolling(paramFilterScreenCreate);
}

public DataSet LongRunningMethod( SqlParameter[] paramFilterScreenCreate)
{
DataSet dtFilter = new DataSet();

// call a stored procedure and connection string(Session Manager class - session.cs)
dtFilter = SqlHelper.ExecuteDataset(Utility.GetConnectionString(Constants.ASSET_MANAGEMENT), StoredProcedures.ROD_SCREEN_FILTER_EXECUTE, paramFilterScreenCreate);
return dtFilter;
}

public DataSet ExecutePolling(SqlParameter[] paramFilterScreenCreate)
{
MethodDelegate dlgt = LongRunningMethod;

// Initiate the asynchronous call.
IAsyncResult ar = dlgt.BeginInvoke(paramFilterScreenCreate, null, null);

// Poll IAsyncResult.IsCompleted
while (ar.IsCompleted == false)
{
Thread.Sleep(1000);
}

DataSet result = dlgt.EndInvoke(ar);

return result;
}

class Session
{
/// Returns of the value of the session for the specified key
public static T Get(string key)
{
object objectToReturn = null;
objectToReturn = HttpContext.Current.Session[key] ;//HttpContext is null here

return objectToReturn == null ? default(T) : (T)objectToReturn;
}
}


Подробнее здесь: https://stackoverflow.com/questions/299 ... g-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»