首页 新闻 会员 周边 捐助

网站静态化读写文件冲突怎么解决?

0
悬赏园豆:30 [已解决问题] 解决于 2008-05-14 09:28
<DIV class=postText>网站进行静态化,思路如下:<BR>根据静态文件的时间判断是否是最新的静态文件,如果是,直接反馈静态文件,否则生成新的静态文件并返回。<BR>现在的问题是时不时会出现如下的错误:<BR> <P><FONT face=Verdana>事件代码: 3005 <BR>事件消息: 发生了未处理的异常。 <BR>事件时间: 2008-4-1 18:12:15 <BR>事件时间(UTC): 2008-4-1 10:12:15 <BR>事件 ID: bc1880e95c6f42b6970ce31eba3afd65 <BR>事件序列: 49205 <BR>事件匹配项: 70 <BR>事件详细信息代码: 0 <BR>&nbsp;<BR>应用程序信息: <BR>&nbsp;&nbsp;&nbsp; 应用程序域: /LM/W3SVC/282653056/Root-1-128515111904077500 <BR>&nbsp;&nbsp;&nbsp; 信任级别: Full <BR>&nbsp;&nbsp;&nbsp; 应用程序虚拟路径: / <BR>&nbsp;&nbsp;&nbsp; 应用程序路径: D:\s\ <BR>&nbsp;&nbsp;&nbsp; 计算机名:&nbsp;computer<BR>&nbsp;<BR>进程信息: <BR>&nbsp;&nbsp;&nbsp; 进程 ID: 5220 <BR>&nbsp;&nbsp;&nbsp; 进程名: w3wp.exe <BR>&nbsp;&nbsp;&nbsp; 帐户名: NT AUTHORITY\NETWORK SERVICE <BR>&nbsp;<BR>异常信息: <BR>&nbsp;&nbsp;&nbsp; 异常类型: IOException <BR>&nbsp;&nbsp;&nbsp; 异常消息: <SPAN style="COLOR: red">文件“e:\c\2468712.html”正由另一进程使用,因此该进程无法访问该文件</SPAN>。&nbsp; 错在这里<BR>&nbsp;</FONT></P> <P><FONT face=Verdana>&nbsp;&nbsp;&nbsp; 用户:&nbsp; <BR>&nbsp;&nbsp;&nbsp; 是否已经过身份验证: False <BR>&nbsp;&nbsp;&nbsp; 身份验证类型:&nbsp; <BR>&nbsp;&nbsp;&nbsp; 线程帐户名: NT AUTHORITY\NETWORK SERVICE <BR>&nbsp;<BR>线程信息: <BR>&nbsp;&nbsp;&nbsp; 线程 ID: 300 <BR>&nbsp;&nbsp;&nbsp; 线程帐户名: NT AUTHORITY\NETWORK SERVICE <BR>&nbsp;&nbsp;&nbsp; 是否正在模拟: False <BR>&nbsp;&nbsp;&nbsp; 堆栈跟踪:&nbsp;&nbsp;&nbsp; 在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)<BR>&nbsp;&nbsp; 在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)<BR>&nbsp;&nbsp; 在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)<BR>&nbsp;&nbsp; 在 System.IO.StreamWriter.CreateFile(String path, Boolean append)<BR>&nbsp;&nbsp; 在 System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)<BR>&nbsp;&nbsp; 在 System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)<BR>&nbsp;&nbsp; 在 System.Web.UI.Control.OnPreRender(EventArgs e)<BR>&nbsp;&nbsp; 在 System.Web.UI.Control.PreRenderRecursiveInternal()<BR>&nbsp;&nbsp; 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)<BR>&nbsp;<BR>&nbsp;<BR>自定义事件详细信息: </FONT></P> <P><FONT face=Verdana>有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。</FONT></P></DIV>
dreamstill的主页 dreamstill | 菜鸟二级 | 园豆:205
提问于:2008-04-01 18:24
< >
分享
最佳答案
0
catch这样的异常,直接动态返回页面内容就行了. 这样一来,某个静态页正在被使用,而又需要更新之后,新的请求都是动态返回的,而不会再次打开这个文件.所以很快这个文件就可以被修改了.
deerchao | 大侠五级 |园豆:8367 | 2008-04-01 18:54
其他回答(3)
0
这是一个很常见的问题,一般我都是直接try...catch...来处理的,曾在网上见过有人说检查文件是否被锁定,如果未锁定,再更新,不过没试过
菩提树下的杨过 | 园豆:556 (小虾三级) | 2008-04-01 21:09
0
这个应该是两个人同时访问了一个不存在的页面 你可以给正在写的文件加锁
雨中漫步的太阳 | 园豆:235 (菜鸟二级) | 2008-04-03 15:41
0
并发加锁
Justin | 园豆:980 (小虾三级) | 2008-04-05 18:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册