储存的临时用户的文件ASP.NET 在介质上的信任
-
07-07-2019 - |
题
我有一种情况,用户的我ASP.NET 网络应用程序的提交推荐的组成文的信息和图像。在提交过程具有以下步骤:
- 第一本用户输入的内容和选择的路径图像
- 当他击时的预览,信息是再一次显示这样他就可以确认
- 一旦证实的信息被保存在数据库
这个问题是,我不想商店传的图像数据库之前,用户实际上证实。而不是我的商店它们作为临时文件,并把它们放在DB后,才最终确认。
因为我也想要我的应用程序运行在介质上的信任,我已经写入权限只应用目录和无处之外。我甚至想到的限制写入权限的ASPNET网络服务用户的~/App_Data文件夹。该问题与我的情况是,一旦一个临时文件是在创建这个文件夹,用游泳池的再循环和我不想那样对每个证明提交。
怎么你建议我保持这些临时文件,而不是?游泳池是不是重新启动,如果我更新一个文件只有在创建或重新命名。但我不认为我可以整个图像储存在一个单一的文件为所有用户。你怎么想?
更新:我应该注意的是,我使用的第三方控制的上传。它给我编程访问的二流的文件内容之后上载,但我无法保持这之后的第二回发(第一步,并回实际上没有上载)。
解决方案
我会推荐 IsolatedStorage.它是一种虚拟的文件夹。
这里是一个摘录 一个例子在演示:
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;
}
}
其他提示
默认web_mediumtrust.配置文件中,Microsoft船是臭名昭着不切实际的。
这里是一个片段从默认web_mediumtrust.配置文件。默认情况下,不能使用的系统。IO发现或写信给临时文件夹。
<IPermission
class="FileIOPermission"
version="1"
Read="$AppDir$"
Write="$AppDir$"
Append="$AppDir$"
PathDiscovery="$AppDir$"
/>
虽然我还没有experirement与孤立存储所提到的@Seb,它似乎允许通过默认的配置文件。
你仍然可以利用正常的 路径。GetTempFilename()方法得到一个临时文件ASP.NET 情况。
它应该给你一个临时文件路径,是可写的NETWORK_SERVICE但也生活在一个实际Windows'临时文件夹不是你的应用程序的文件夹。
如果你主机构造成他的服务器是否正确,应该作品的罚款。
这是一个答复Leppie谁评论我的问题(避免焦炭限制)
...有时你的应用程序池莫名其妙地回收为没有明显的原因。这通常是结构问题或者由于这样的事实,正在执行文件系统操作中应用的目录。
你确定这是不是应该回收?