【发布时间】:2011-11-21 07:26:29
【问题描述】:
// test.ashx
public class test : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
try
{
File.WriteAllText(@"D:\inetpub\site.net\www\gs\data\test.txt", "Test");
Thread t = new Thread(write);
t.Start();
context.Response.Write("OK");
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
}
private void write()
{
try
{
File.WriteAllText(@"D:\inetpub\site.net\www\gs\data\test2.txt", "Test2");
}
catch (Exception ex)
{
LogManager.Instance.Write(ex.Message);
}
}
public bool IsReusable {
get {
return false;
}
}
}
我有一个简单的 ashx 文件,它将两个文本文件写入服务器的磁盘。一个是直接写的,另一个是在单独的线程中写的。
问题是,在单独线程中执行的File.WriteAllText 方法会导致访问被拒绝异常。换句话说,“test.txt”被写入,但“test2.txt”导致访问被拒绝异常。
有没有办法赋予线程主 Session 线程的读/写权限?
【问题讨论】:
-
我不认为问题出在代码上。尝试在 c temp 上写入,并为该文件夹中的每个人提供写入权限。我想问题出在 ntfs 或 iis 权限上。
-
我的应用程序在我的托管公司的服务器上,我无权更改权限或输出目录
-
也许磁盘上的权限没有传播到另一个线程?您的模拟/身份设置是什么样的?另外,你想做什么? :)
-
我想是这样,但我不知道为什么会发生这种行为。我不做任何自定义模拟编码(所有代码都在上面)。
标签: asp.net multithreading ashx