我正在尝试将具有网络服务标识的应用程序池中的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;
答案 0 :(得分:1)
清除服务器上的临时文件。我知道这听起来很疯狂,但S#会在配置上进行文件缓存。
我已经多次这样做了,但从未见过你报道的问题。您对存储库(其中任何一个)的任何调用是否成功或者除了这个之外都会成功?
这是对我的影响。你的应用程序旋转了。如果它有连接问题,它将无法启动应用程序。这让我相信你可能有另一个问题。
答案 1 :(得分:0)
这个问题的根本原因是在此之前存在另一个例外,即NHibernate“无法编译映射文档”。原因是.NET XMLSerializer需要对c:\ windows \ temp的写访问权。我右键单击了此文件夹,并添加了具有修改权限的应用程序池标识(域用户)。然后它被修复了。 这在NHibernate MappingException: Could not compile the mapping document
中都有解释(所以它确实与临时文件相关,Alec。)