2016-08-04 104 views
0

我有一個IIS快遞項目在調試模式下運行在Visual Studio 2015年在找不到bin文件夾中的內容文件

Web應用程序引用一個類庫其中有下面這行代碼:

var certificate = new X509Certificate2(@"certkey.p12", "notasecret", X509KeyStorageFlags.Exportable); 

certkey.p12文件與標記爲「Build Action = Content」和「Copy if newer」的類庫的源代碼位於同一文件夾中。

當我建立時,文件被複制到Web應用程序的bin文件夾按預期。但是當我從Web應用程序調用該方法時,它會拋出「未找到文件」。

它工作正常,在單元測試該文件被複製爲/ bin/X64 /調試/

那麼,是IIS快遞要找的文件?我懷疑它是某種臨時文件夾,但爲什麼不是當我構建/調試時將文件複製到那裏?

回答

0

在IIS Express下運行時,它所查找的是「C:\ Programs Files \ IIS Express \ certkey.p12」。

我用了一點,窺測找到該文件實際上是複製到文件夾,並用此想出了:

string binPath = System.Reflection.Assembly.GetExecutingAssembly().CodeBase; 
Uri uri = new Uri(binPath); 
string localPath = uri.LocalPath; 
string dir = System.IO.Path.GetDirectoryName(localPath); 
// now "dir" is the full local path of the bin folder 

這是一個有點慢於第一執行(〜100毫秒),但在後續請求更快。

如果在將其部署到生產環境時出現問題,我會更新。