Asp.net IIS临时文件
出于各种安全原因,我们实现了一个程序集,该程序集需要同时存在一个文本文件。我们希望在ASP.NET应用程序中使用此库。我们遇到的问题是,当应用程序启动时,程序集的加载失败,因为所需的文本文件不在加载程序集的临时ASP.NET文件子目录中。是否有方法配置要从bin目录加载的程序集?如果没有,是否有一种方法可以预测dll的去向,并编写一个脚本来手动将我们的文件复制到那里?我认为将该文本文件包含到项目中可以解决您的问题 这是你需要做的Asp.net IIS临时文件,asp.net,Asp.net,出于各种安全原因,我们实现了一个程序集,该程序集需要同时存在一个文本文件。我们希望在ASP.NET应用程序中使用此库。我们遇到的问题是,当应用程序启动时,程序集的加载失败,因为所需的文本文件不在加载程序集的临时ASP.NET文件子目录中。是否有方法配置要从bin目录加载的程序集?如果没有,是否有一种方法可以预测dll的去向,并编写一个脚本来手动将我们的文件复制到那里?我认为将该文本文件包含到项目中可以解决您的问题 这是你需要做的 通过添加现有项向项目中添加文本 右键单击Textfile并选择bu
问题当然是您解析当前文件夹以在程序集中加载文本文件的方式 您应该使用该属性获取IIS根文件夹 如果文本文件已在Web应用程序
bin
文件夹中,请组合:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin");
您可以使用该属性进行清洁
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.RelativeSearchPath);
添加一个指定文件在磁盘上的位置的配置设置不是更简单吗?我已经考虑过了,但在这种情况下它不是一个选项。我希望我能早点回来检查你的答案。我认为这个解决方案可能会奏效。控制台应用程序情况或windows应用程序情况如何。在那个实例中它还会工作吗?我有没有办法告诉IIS在动态编译时将文本文件复制到程序集的位置?这样,当我从程序集本身调用assembly.GetExecutionGassembly().Location时,文本文件将已经位于程序集旁边。关于控制台或windows应用程序,好消息是
AppDomain
与应用程序所在的位置相关。因此,BaseDirectory
在每种情况下都是正确的,这与环境不同。CurrentDirectory
。在您的第二条评论中,IIS本身不能也不应该在应用程序启动时对您的二进制文件进行处理。这是一个招待所。如果要将文件与程序集进行强链接,可以将其替换为appart。在这种情况下,您的文本文件将不会显示在您的文件夹中(不可修改,不可读…)。