2016-08-04 70 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毫秒),但在后续请求更快。

如果在将其部署到生产环境时出现问题,我会更新。