Где находится SessionScopeWebModule? - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь настроить веб-сеанс Active Record для каждого запроса в моем приложении WCF. Я включил это в мой web.config:

<httpModules>
      <add
          name="ar.sessionscope"
          type="Castle.ActiveRecord.Framework.SessionScopeWebModule, Castle.ActiveRecord" />
    </httpModules>

Это было рекомендуемое решение из документации Castle:

http://www.castleproject.org/activerecord/documentation/trunk/usersguide/web.html

Однако это не работает, выдает ошибку:

Не удалось загрузить тип 'Castle.ActiveRecord.Framework.SessionScopeWebModule' из сборки 'Castle.ActiveRecord'.

Был ли перемещен SessionScopeWebModule? Я использую новейшие библиотеки AR для .NET 4.

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Действительно, SessionScopeWebModule был перемещен в отдельный проект с именем Castle.ActiveRecord.Web .Это было сделано для того, чтобы основная сборка Castle.ActiveRecord могла использоваться в целях профиля клиента.

Поэтому добавьте ссылку на Castle.ActiveRecord.Web.dll и измените тип в конфигурации на:

type="Castle.ActiveRecord.Framework.SessionScopeWebModule, Castle.ActiveRecord.Web"
0 голосов
/ 21 ноября 2011

Обратите внимание, что работает следующее, хотя решение web.config не работает:

public void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Items.Add("ar.sessionscope", new SessionScope());
        }

        public void Application_EndRequest(object sender, EventArgs e)
        {
            try
            {
                var scope = HttpContext.Current.Items["ar.sessionscope"] as SessionScope;
                if (scope != null)
                    scope.Dispose();
            }
            catch (Exception ex)
            {
                HttpContext.Current.Trace.Warn("Error", "EndRequest: " + ex.Message, ex);
            }
        }
...