Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net IIS临时文件_Asp.net - Fatal编程技术网

Asp.net IIS临时文件

Asp.net IIS临时文件,asp.net,Asp.net,出于各种安全原因,我们实现了一个程序集,该程序集需要同时存在一个文本文件。我们希望在ASP.NET应用程序中使用此库。我们遇到的问题是,当应用程序启动时,程序集的加载失败,因为所需的文本文件不在加载程序集的临时ASP.NET文件子目录中。是否有方法配置要从bin目录加载的程序集?如果没有,是否有一种方法可以预测dll的去向,并编写一个脚本来手动将我们的文件复制到那里?我认为将该文本文件包含到项目中可以解决您的问题 这是你需要做的 通过添加现有项向项目中添加文本 右键单击Textfile并选择bu

出于各种安全原因,我们实现了一个程序集,该程序集需要同时存在一个文本文件。我们希望在ASP.NET应用程序中使用此库。我们遇到的问题是,当应用程序启动时,程序集的加载失败,因为所需的文本文件不在加载程序集的临时ASP.NET文件子目录中。是否有方法配置要从bin目录加载的程序集?如果没有,是否有一种方法可以预测dll的去向,并编写一个脚本来手动将我们的文件复制到那里?

我认为将该文本文件包含到项目中可以解决您的问题

这是你需要做的

  • 通过添加现有项向项目中添加文本
  • 右键单击Textfile并选择buildaction作为“Content”
  • 选择复制到输出目录作为“始终复制”

  • 问题当然是您解析当前文件夹以在程序集中加载文本文件的方式

    您应该使用该属性获取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。在这种情况下,您的文本文件将不会显示在您的文件夹中(不可修改,不可读…)。