【发布时间】:2016-04-05 09:35:43
【问题描述】:
我运行一个用 C# 编写的 C# MVC 网站已经很长时间了。最近,我在我的记录器数据中注意到了这条日志消息:
System.IO.IOException: The network name cannot be found.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.Directory.EnumerateFiles(String path)
at System.Web.WebPages.Deployment.WebPagesDeployment.AppRootContainsWebPagesFile(String path)
at System.Web.WebPages.Deployment.PreApplicationStartCode.OnChanged(String key, Object value, CacheItemRemovedReason reason)
at System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback(CacheItemRemovedCallback callback, CacheItemRemovedReason reason)
我也知道:
-
ASP.global_asax文件引发了此异常。 - 这种情况会在几周内发生一次。但是,当它发生时,我会在我的记录器中多次看到这个异常(每个异常之间有一秒钟的延迟)。
如您所见,此调用堆栈中的任何内容都不在我的代码中。因此,我不知道如何重现或解决此问题。
你建议我如何解决这个问题?任何提示都会有所帮助。
【问题讨论】:
-
看起来配置文件中的某些内容指向网络路径。 SMB 路径有时会在几秒钟内不可用。用“//”标记所有内容。
-
检查你的代码中你“投掷”的地方。很可能有人做了一个“抛出异常”,它会破坏你的堆栈跟踪。单独替换为“throw”,这至少应该让您获得完整的堆栈跟踪,以便在下次发生时使用。在此答案中找到有关“throw”与“throw ex”的信息:stackoverflow.com/questions/2728640/…
-
你能分享你的 global.asax 代码吗?
-
可能备份软件正在锁定文件。或者远程服务器重新启动,使其在一分钟左右不可用。
-
@user7396598 就我而言,这不是问题。它似乎是 ASP.Net 内部的一个进程,它抛出了错误,因此缺乏相关的堆栈跟踪。但我们仍然需要弄清楚它发生的原因以及我们如何预防它。
标签: c# asp.net asp.net-mvc ioexception