При динамическом рендеринге UserControl, как заставить его использовать текущий сеанс? - PullRequest
1 голос
/ 26 июля 2011

Я рендеринг пользовательского элемента управления из HttpHandler, например:

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";
    string workName = context.Request.QueryString["name"];
    string workForm = RenderView("~/work/" + workName + ".ascx");
    context.Response.Write(workForm);
}

public static string RenderView(string path)
{
    Page pageHolder = new Page();
    UserControl viewControl = (UserControl)pageHolder.LoadControl(path);
    pageHolder.Controls.Add(viewControl);
    StringWriter result = new StringWriter();
    HttpContext.Current.Server.Execute(pageHolder, result, false);
    return result.ToString();
}

Проблема в том, что отображаемая страница генерирует новый сеанс. (Я могу сказать, сравнивая идентификатор сеанса для визуализированного HTML с текущим идентификатором сеанса)

Как заставить динамическую страницу использовать текущий сеанс?

Примечание: код не за логином, но будет в будущем. Есть ли какие-то проблемы, о которых я должен помнить, например, о предоставлении файлов сеанса и аутентификации и т. Д.?

1 Ответ

0 голосов
/ 26 июля 2011

Убедитесь, что ваш HttpHandler реализует интерфейс маркера IRequiresSessionState .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...