1

ここのブログ投稿をフォローしようとしています: http://www.philliphaydon.com/2012/06/using-nhibernate-with-servicestack/ですが、コードで問題が発生しています。基本的に、私は Phillip と同じように SessionFactory を設定しています。私のサービスは Phillip のものと同じように見えます。

私が直面している問題は、関数をステップ実行せずに DB からデータを取得しようとしたときです。セッションにアクセスする前にセッションが強制終了されたように見え、コードが単に壊れているように見えます。

NHProf ServiceStack の問題 http://i.stack.imgur.com/hw1jW.png

奇妙なことは、関数をステップ実行してデバッグしようとすると、結果が正常に返され、NHProf が同意することです。

NH 教授 ServiceStack の問題 2 http://i.stack.imgur.com/DfNSi.png

奇妙なことに、なぜこれが起こったのかについて誰かが答えを持っていれば、それは大歓迎です!

4

1 に答える 1

3

EndRequest でセッションを破棄するとどうなりますか? これにより、データベース呼び出しを行うたびにセッションを破棄することを心配する必要がなくなります。

web.config で以下を使用して、FluentSessionManager.cs 内の Init イベントにアタッチできるようにします。

<httpModules>
        <add name="MyFramework.FluentSessionManager" type="MyFramework.FluentSessionManager" />
</httpModules>

名前空間 MyFramework にある FluentSessionManager.cs 内:

public void Init(HttpApplication context)
    {
        context.EndRequest += Application_EndRequest;
    }

public static void Application_EndRequest()
    {
        // Perform the disposing of your session here.  Commit, close, etc....
    }

これにより、EndRequest イベントでセッションを閉じて破棄できるようになります。これにより、メモリ リークや SQL サーバーへのゾンビ接続も防止できます。

うまくいけば、これが役に立ちます。

于 2013-01-16T20:48:25.547 に答える