2011-02-01 52 views
5

Tôi đã hibernate.cfg.xml bao gồm trong thư viện dịch vụ WCF của tôi vớiNHibernate - Không thể tìm thấy tập tin hibernate.cfg.xml

BuildAction = Content and 
Copy to output directory = Copy Always

Tuy nhiên, khi tôi chạy ứng dụng nó được ném lỗi sau:

Could not find file 
'C:\Program Files (x86)\DevExpress 2010.2\IDETools\System\CodeRush\Bin\PlugIns\hibernate.cfg.xml'

Tôi không chắc chắn lý do tại sao tìm kiếm tệp hibernate.cfg.xml ở trên đường dẫn thay vì thư mục bin thời gian chạy.

FYI: Gần đây tôi đã cài đặt DevExpress v10.2 để sử dụng trong một ứng dụng khác.

Bất kỳ ý tưởng nào?

Trả lời

14

Một lựa chọn là để di chuyển cấu hình nHibernate của bạn vào web.config

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    ... 
    </session-factory> 
</hibernate-configuration> 

Trong phần configsections bạn thêm

<configuration> 
    <configSections> 
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirePermission="false" /> 
    ... 
    <configSections> 
<configuration> 

Một lựa chọn khác là cố gắng này (chưa được kiểm tra trong WCF)

var cfg = new Configuration(); 
cfg.Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"hibernate.cfg.xml")); 
+0

Cảm ơn Rippo, thiết lập Environment.CurrentDirectory = System.AppDomain.CurrentDomain.Ba seDirectory; giải quyết vấn đề của tôi. Tuy nhiên tôi vẫn không thể hiểu tại sao thời gian chạy có DevExpress là thư mục hiện tại. – iniki

+0

Vượt qua trên tuy nhiên nó luôn luôn là tốt hơn để nói rõ ràng với cấu hình NHibernate nơi để tìm cấu hình xml. – Rippo

+0

Sử dụng Ứng dụng Dịch vụ WCF thay vì thư viện, tôi thấy rằng tôi cần tiền tố "bin /" vào tên tệp. Kể từ khi các hội đồng sẽ được trong thư mục bin khi triển khai anyway, tôi nghĩ rằng loại mã hóa cứng sẽ không phải là một vấn đề. –

Các vấn đề liên quan