Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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
C# 如何知道是什么在文件上保持锁定_C#_Asp.net_File - Fatal编程技术网

C# 如何知道是什么在文件上保持锁定

C# 如何知道是什么在文件上保持锁定,c#,asp.net,file,C#,Asp.net,File,尝试使用此方法从我的ASP.NET web应用程序读取文件时: string strContents; using (StreamReader sr = new StreamReader(strFilePath)) { strContents = sr.ReadToEnd(); } 我得到以下例外情况: 进程无法访问文件“file\u path”,因为它正在被删除 被另一个进程使用 所以我很好奇,有没有办法知道是什么锁定了这个文件 PS.从异常内部了解这一点很好,如果这不可能,是否有其

尝试使用此方法从我的ASP.NET web应用程序读取文件时:

string strContents;
using (StreamReader sr = new StreamReader(strFilePath))
{
    strContents = sr.ReadToEnd();
}
我得到以下例外情况:

进程无法访问文件“file\u path”,因为它正在被删除 被另一个进程使用

所以我很好奇,有没有办法知道是什么锁定了这个文件


PS.从异常内部了解这一点很好,如果这不可能,是否有其他方法可以了解它?

标准答案是使用sysinternal工具之一,查看是什么进程锁定了文件

如果您确定这是您的代码,那么代码检查可能比使用WinDbg挖掘进程转储更容易


如果您想自己编写—阅读“Windows内部构件”这本书基本上是必须的,并且具备良好的互操作知识将更为重要。

标准答案是使用Sysinternal工具之一,查看是什么进程锁定了文件

如果您确定这是您的代码,那么代码检查可能比使用WinDbg挖掘进程转储更容易


如果你想自己写——阅读“Windows内部构件”这本书基本上是必须的,并且对互操作有很好的了解就更好了。

你听说过吗?这很标准,我想大家都知道,我听说了。我首先考虑了如何从我的过程中了解它。最后,您可能会意识到它是
w3wp
过程。杀死一个进程是不健康的,但它是你的朋友。@JeremyThompson:
解锁器
似乎是一个漂亮的小工具。谢谢。@Jeremythonpson:哇,你说得对。它是
w3wp
。我是从
句柄
例程中得到的。到底是什么?为什么它会锁定我的文件?有没有办法阻止它这么做?你没听说过吗?这很标准,我想大家都知道,我听说了。我首先考虑了如何从我的过程中了解它。最后,您可能会意识到它是
w3wp
过程。杀死一个进程是不健康的,但它是你的朋友。@JeremyThompson:
解锁器
似乎是一个漂亮的小工具。谢谢。@Jeremythonpson:哇,你说得对。它是
w3wp
。我是从
句柄
例程中得到的。到底是什么?为什么它会锁定我的文件?有没有办法阻止它这样做?好的,我明白了。因此,抛出异常时,该信息不包括在异常中,是吗?@ahmd0-否。据我所知,唯一可用的信息是进程ID,但在许多情况下,要获得该信息,进程需要更高的权限才能找到它。因此,异常中没有任何信息(据我所知,没有内置的获取方法)。@ahmd0,如果是Visual Studio中的流程代码分析(FxCop)(如果您有您的版本),则可能会帮助您找到未正确处理读卡器/流对象的情况(请参阅)正如我刚刚使用
handle
工具发现的那样,您建议对我的文件持有锁的进程是
w3wp
。我在上面发布了一个更新。有没有办法阻止它锁定甚至打开我的文件?@ahmd0:)w3wp是您的进程-w3wp是承载IIS的ASP.Net运行时的进程(或任何其他运行时服务页面-因此命名为“万维网工作进程”)。因此,您的代码在某个地方忘记释放锁(可能缺少一些关于文件使用的用法)。因此,抛出异常时,该信息不包括在异常中,是吗?@ahmd0-否。据我所知,唯一可用的信息是进程ID,但在许多情况下,要获得该信息,进程需要更高的权限才能找到它。因此,异常中没有任何信息(据我所知,没有内置的获取方法)。@ahmd0,如果是Visual Studio中的流程代码分析(FxCop)(如果您有您的版本),则可能会帮助您找到未正确处理读卡器/流对象的情况(请参阅)正如我刚刚使用
handle
工具发现的那样,您建议对我的文件持有锁的进程是
w3wp
。我在上面发布了一个更新。有没有办法阻止它锁定甚至打开我的文件?@ahmd0:)w3wp是您的进程-w3wp是承载IIS的ASP.Net运行时的进程(或任何其他运行时服务页面-因此命名为“万维网工作进程”)。因此,您的代码在某个地方忘记释放锁(可能缺少一些文件使用方法)。