2017-03-09 56 views
1

我正在使用Nancy自託管功能來執行一些單元測試。從我的單元測試項目(獨立於南希API項目),我用下面的代碼來創建我的API的一個實例:.NET Nancy自託管配置文件丟失

var myApp = new NancyHost(new Uri(MockRestApiUrl), new Bootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } }); 

在引導程序我有一些代碼,查找一組配置文件預先加載到內存中。請注意,這些文件不是要提供的靜態文件,而是驅動API配置的文件。

我遇到的問題是Bootstrapper生成一個異常,因爲它無法找到它正在尋找的配置文件。我通過RootPathProvider.GetRootPath()設置的配置文件路徑,並得到:

C:\應用程序數據\本地的\ Temp \ b3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3 \ b3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3 \裝配\ DL3 \ bf80d16d \ b3b00d8e_bd91d201 \ Mapping \ PropertyMapping.json

當我看文件夾時,映射文件夾和配置文件丟失。我試圖在Visual Studio中將這些標記爲「內容」和「始終複製」,並已多次清理我的解決方案,但沒有運氣。我如何將這些文件複製到自託管網站?

回答

0

我仍然不知道爲什麼我的模塊中的注入路徑提供程序給了我一個'... AppData ...'路徑。不過,我也輪得到它,如下所示:

public class SelfHostRootPathProvider : IRootPathProvider 
{ 
    public string GetRootPath() 
    { 
     return AppDomain.CurrentDomain.BaseDirectory; 
    } 
} 

而且從我的應用程序的引導程序的派生類:

public class IntegrationBootstrapper : Bootstrapper 
{ 
    protected override IRootPathProvider RootPathProvider 
    { 
     get { return new SelfHostRootPathProvider(); } 
    } 
} 

如果您需要的實例:

 var myApp = new NancyHost(new Uri(ServiceUrl), new IntegrationBootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } }); 

解析我的單元測試項目的調試文件夾的路徑。然後我必須確保任何配置文件都鏈接到我的單元測試項目(添加 - >現有項目 - >添加爲鏈接),並在兩個項目中設置爲Visual Studio中的內容/始終複製。