【发布时间】:2012-10-27 11:22:30
【问题描述】:
这是我在这个页面上的第一个问题,所以首先对新手的错误和我的英语不好表示抱歉。
如果我没有想尽办法解决我的问题,我不会在这样的页面上提问,所以我希望我能在你的帮助下让它工作,因为这是我最后的机会。
我使用 NHibernate 在 C# 中创建了一个程序,以将其连接到我的 Oracle 数据库(运行良好),现在我被告知要创建一个类似的程序,但现在是在 Windows 服务而不是 .exe 中。
问题是我已经完成了所有设置,以使 NHibernate 像在 .exe 程序中一样工作,如果我调试程序一切正常,但是一旦我安装并运行该服务,它就会停止工作。
我没有在程序中做任何事情,只是测试 NHibernate 连接。
例外:
Could not compile the mapping document: Mapping\CSB_Mensaje.hbm.xml
System.IO.DirectoryNotFoundException: No se puede encontrar una parte de la ruta de acceso 'C:\Windows\system32\Mapping\CSB_Mensaje.hbm.xml'.
en System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
en System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
en System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
en System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials, IWebProxy proxy, RequestCachePolicy cachePolicy)
en System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
en System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver)
en System.Threading.CompressedStack.runTryCode(Object userData)
en System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
en System.Threading.CompressedStack.Run(CompressedStack compressedStack, ContextCallback callback, Object state)
en System.Xml.XmlTextReaderImpl.OpenUrl()
en System.Xml.XmlTextReaderImpl.Read()
en System.Xml.XmlTextReader.Read()
en System.Xml.XmlCharCheckingReader.Read()
en System.Xml.XsdValidatingReader.Read()
en System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
en System.Xml.XmlDocument.Load(XmlReader reader)
en NHibernate.Cfg.Configuration.LoadMappingDocument(XmlReader hbmReader, String name)
西班牙语上的异常部分,说它找不到访问路径的一部分。
尝试执行此代码时抛出此异常:
private static void Init(String BBDD)
{
Configuration config = new Configuration();
config.Configure().SessionFactoryName(BBDD);
config.AddFile("Mapping\\CSB_Mensaje.hbm.xml");
config.AddFile("Mapping\\CSB_Periodicidad.hbm.xml");
config.AddFile("Mapping\\CSB_Plantilla.hbm.xml");
config.AddFile("Mapping\\CSB_Subscripciones.hbm.xml");
config.AddFile("Mapping\\CSB_Usuario.hbm.xml");
config.AddFile("Mapping\\CSB_Login.hbm.xml");
config.AddFile("Mapping\\CSB_Configuration.hbm.xml");
_SessionFactory = config.BuildSessionFactory();
}
这是我的 hibernate.cfg.xml 文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory name="Oracle">
<property name="connection.provider">
NHibernate.Connection.DriverConnectionProvider
</property>
<property name="dialect">
NHibernate.Dialect.Oracle10gDialect
</property>
<property name="connection.driver_class">
NHibernate.Driver.OracleClientDriver
</property>
<property name="connection.connection_string">
User Id=CSB;
Password=Hound2012;
Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.30)(PORT = 1521)))(CONNECT_DATA = (SID = HL)));
</property>
<property name="show_sql">
true
</property>
</session-factory>
</hibernate-configuration>
再次,这是我第一次在这里提出问题,所以对于所犯的任何错误,我深表歉意。任何帮助将不胜感激。
问候, 霍尔
【问题讨论】:
-
真的很快,我猜该服务没有读取映射文件的权限。在调试下,您/您自己拥有权限,但您运行服务的任何用户帐户都没有。
-
实际上我正在使用同一个帐户运行两者,但您的猜测看起来可能是它不起作用的原因,所以我会在没有更好的尝试时进行处理。谢啦。编辑:我尝试使用管理员帐户启动服务,但我得到了同样的错误。
标签: c# oracle nhibernate