在bin文件夹中找不到内容文件

时间:2016-08-04 09:26:36

标签: visual-studio iis-express

我有一个在Visual Studio 2015中以调试模式运行的IIS Express项目。

Web应用程序引用具有以下代码行的类库:

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

certkey.p12文件与类库的源代码位于同一文件夹中,标记为“Build Action = Content”和“Copy if newer”。

构建时,文件会按预期复制到Web应用程序的bin文件夹中。但是当我从Web应用程序调用该方法时,它会抛出“找不到文件”。

它在单元测试中工作正常,文件被复制到/ bin / x64 / Debug /

那么IIS Express在哪里寻找文件?我怀疑它是某种临时文件夹但是为什么在我构建/调试时VS没有复制文件?

1 个答案:

答案 0 :(得分: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

首次执行时(~100ms)有点慢,但后续请求更快。

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