代码之家  ›  专栏  ›  技术社区  ›  Slavo

以中等信任度在ASP.NET中存储临时用户文件

  •  5
  • Slavo  · 技术社区  · 16 年前

    • 首先,用户输入内容并选择图像的路径
    • 一旦确认,信息将保留在数据库中

    问题是我不想在用户确认之前将上传的图像存储在数据库中。取而代之的是,我将它们存储为临时文件,只有在最终确认后才将它们放入数据库中。

    由于我还希望我的应用程序以中等信任运行,因此我只对应用程序目录具有写权限,而不在外部。我甚至想限制ASPNET/networkservice用户对~/App\u数据文件夹的写入权限。我的方案的问题是,一旦在这个文件夹中创建了一个临时文件,应用程序池就会被回收,我不希望每次提交证明时都这样。

    你建议我如何保存这些临时文件?如果仅在创建或重命名时更新文件,则不会重新启动池。但我不认为我可以为所有用户将整个图像存储在一个文件中。你怎么认为?

    使现代化

    4 回复  |  直到 16 年前
        1
  •  5
  •   Seb Nilsson    16 年前

    IsolatedStorage . 这是一种虚拟文件夹。

    这是一篇文章的摘录 an example on CodeProject :

    IsolatedStorageFileStream stream = 
      new IsolatedStorageFileStream(ISOLATED_FILE_NAME, 
      FileMode.Create, isoStore);
    
    StreamWriter writer = new StreamWriter( stream );
    writer.WriteLine( "This is my first line in the isolated storage file." );
    writer.WriteLine( "This is second line." );
    writer.Close();
    

    使现代化

    string fileName = "isolatestorage.txt";
    
    IsolatedStorageFile storage = IsolatedStorageFile.GetStore(
        IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
    
    string[] files = storage.GetFileNames(fileName);
    foreach(string file in files) {
        if(file == fileName) {
            storage.DeleteFile(file);
            break;
        }
    }
    
        2
  •  2
  •   Corey Trager    16 年前

    众所周知,Microsoft提供的默认web_mediumtrust.config文件是不切实际的。

    以下是默认web_mediumtrust.config文件的一个片段。默认情况下,您不能使用System.IO查找或写入临时文件夹。

                            <IPermission
                                    class="FileIOPermission"
                                    version="1"
                                    Read="$AppDir$"
                                    Write="$AppDir$"
                                    Append="$AppDir$"
                                    PathDiscovery="$AppDir$"
                            />
    

        3
  •  2
  •   Tieson T.    10 年前

    你仍然可以用普通的 Path.GetTempFilename ()方法在ASP.NET方案中获取临时文件。

    它应该为您提供一个临时文件路径,该路径可由网络_服务写入,但也存在于实际的Windows临时文件夹中,而不是您的应用程序文件夹中。

    如果您的主机正确配置了服务器,那么应该可以正常工作。

        4
  •  0
  •   Slavo    16 年前

    这是对Leppie的回复,Leppie对我的问题发表了评论(以避免字符限制)

    发件人: http://blogs.msdn.com/johan/archive/2007/05/16/common-reasons-why-your-application-pool-may-unexpectedly-recycle.aspx

    你确定它不应该回收吗?

    推荐文章