切换到Windows身份验证时无法获得NHibernate会话

时间:2012-10-30 19:18:06

标签: asp.net-mvc nhibernate s#arp-architecture

我正在尝试将具有网络服务标识的应用程序池中的S#arp架构MVC应用程序切换到具有域用户标识的应用程序池。我在Web服务器上的用户上运行了aspnet_regiis,并授予用户访问数据库的权限(甚至尝试将其作为数据库中的sysadmin)。但是,它似乎无法获得NHibernate会话。

Exception information: 
Exception type: NullReferenceException 
Exception message: Object reference not set to an instance of an object. 

Request information: 
Request URL: http://<redacted> 
Request path: /<redacted> 
User host address: 10.10.10.10
User: <webuser>
Is authenticated: True 
Authentication Type: Forms 
Thread account name: <MYDOMAIN\MYUSER> 

Thread information: 
Thread ID: 1 
Thread account name: <MYDOMAIN\MYUSER> 
Is impersonating: False 
Stack trace:    at SharpArch.Data.NHibernate.NHibernateSession.get_Current() in C:\MyStuff\Dev\Projects\SharpArchitecture\src\SharpArch\SharpArch.Data\NHibernate\NHibernateSession.cs:line 88
at UserAccount.Persistence.UserRepository.GetByPropertiesPartialMatching(IDictionary`2 exactMatchPropertyValuePairs, IDictionary`2 partialMatchPropertyValuePairs, MatchMode matchMode) in c:\Persistence\UserRepository.cs:line 66
...

在SharpArch NHibernateSession.cs中给出Null引用异常的实际行是:

ISession session = Storage.Session;

2 个答案:

答案 0 :(得分:1)

清除服务器上的临时文件。我知道这听起来很疯狂,但S#会在配置上进行文件缓存。

我已经多次这样做了,但从未见过你报道的问题。您对存储库(其中任何一个)的任何调用是否成功或者除了这个之外都会成功?

这是对我的影响。你的应用程序旋转了。如果它有连接问题,它将无法启动应用程序。这让我相信你可能有另一个问题。

答案 1 :(得分:0)

这个问题的根本原因是在此之前存在另一个例外,即NHibernate“无法编译映射文档”。原因是.NET XMLSerializer需要对c:\ windows \ temp的写访问权。我右键单击了此文件夹,并添加了具有修改权限的应用程序池标识(域用户)。然后它被修复了。 这在NHibernate MappingException: Could not compile the mapping document

中都有解释

(所以它确实与临时文件相关,Alec。)