[已解决问题] 网站静态化读写文件冲突怎么解决?
提问时间: 2008-04-01 18:24
悬赏分:30 浏览:326 次
网站进行静态化,思路如下:
根据静态文件的时间判断是否是最新的静态文件,如果是,直接反馈静态文件,否则生成新的静态文件并返回。
现在的问题是时不时会出现如下的错误:

事件代码: 3005
事件消息: 发生了未处理的异常。
事件时间: 2008-4-1 18:12:15
事件时间(UTC): 2008-4-1 10:12:15
事件 ID: bc1880e95c6f42b6970ce31eba3afd65
事件序列: 49205
事件匹配项: 70
事件详细信息代码: 0
 
应用程序信息:
    应用程序域: /LM/W3SVC/282653056/Root-1-128515111904077500
    信任级别: Full
    应用程序虚拟路径: /
    应用程序路径: D:\s\
    计算机名: computer
 
进程信息:
    进程 ID: 5220
    进程名: w3wp.exe
    帐户名: NT AUTHORITY\NETWORK SERVICE
 
异常信息:
    异常类型: IOException
    异常消息: 文件“e:\c\2468712.html”正由另一进程使用,因此该进程无法访问该文件。  错在这里
 

    用户: 
    是否已经过身份验证: False
    身份验证类型: 
    线程帐户名: NT AUTHORITY\NETWORK SERVICE
 
线程信息:
    线程 ID: 300
    线程帐户名: NT AUTHORITY\NETWORK SERVICE
    是否正在模拟: False
    堆栈跟踪:    在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   在 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)
   在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   在 System.IO.StreamWriter.CreateFile(String path, Boolean append)
   在 System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   在 System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
   在 System.Web.UI.Control.OnPreRender(EventArgs e)
   在 System.Web.UI.Control.PreRenderRecursiveInternal()
   在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
 
 
自定义事件详细信息:

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。


最佳答案
catch这样的异常,直接动态返回页面内容就行了.
这样一来,某个静态页正在被使用,而又需要更新之后,新的请求都是动态返回的,而不会再次打开这个文件.所以很快这个文件就可以被修改了.
2008/4/1 18:54:34 回答者:deerchao


提问者对于答案的评价:现在就是采取这种方式。效果还不错。
其它回答(3)
这是一个很常见的问题,一般我都是直接try...catch...来处理的,曾在网上见过有人说检查文件是否被锁定,如果未锁定,再更新,不过没试过
3个月前   回答者:菩提树下的杨过 - 菜鸟二级
这个应该是两个人同时访问了一个不存在的页面 你可以给正在写的文件加锁 
3个月前   回答者:雨中漫步的太阳 - 菜鸟二级
并发加锁
3个月前   回答者:Justin - 小虾三级
评论
3个月前   梦想依旧 :
@deerchao 
catch我知道可以是可以的。我想知道的是其他不使用catch的办法?
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除