嗨我有一个应用程序在我的开发环境中工作正常,但在生产环境中抛出奇怪的错误,我检查了我的开发机器上的.net版本以及生产服务器,它们都运行3.5.30729.01。< / p>
我得到的异常是System.IO.FileNotFoundException。
StackTrace:
at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
at System.Configuration.ClientConfigPaths.SetNamesAndVersion(String applicationFilename, Assembly exeAssembly, Boolean isHttp)
at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
at System.Configuration.ClientConfigurationHost.get_ConfigPaths()
at System.Configuration.ClientConfigurationHost.RequireCompleteInit(IInternalConfigRecord record)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
at System.DirectoryServices.SearchResultCollection.ResultsEnumerator..ctor(SearchResultCollection results, String parentUserName, String parentPassword, AuthenticationTypes parentAuthenticationType)
at System.DirectoryServices.SearchResultCollection.GetEnumerator()
at System.DirectoryServices.DirectorySearcher.FindOne()
昨天错误消失了,今天又出现了错误。我尝试在调用之后在System.DirectoryServices.DirectorySearcher.FindOne()上使用反射器,它似乎与配置文件或用户配置文件有关,正如您从stacktrace中看到的那样
关于它试图找到什么配置文件以及无法找到它们的原因的任何想法?
答案 0 :(得分:2)
使用Process Monitor(或增强您的日志记录)来识别找不到的文件。
答案 1 :(得分:0)
我会选择sysinternal“FileMon”。
这是一个捕获每次IO尝试的应用程序,成功与否。使用pacience,您将看到未找到文件的名称。
答案 2 :(得分:0)
我遇到过这个问题。在我的例子中,当我从构建服务器上取下发布应用程序并在我的开发机器上运行它时,我从FindOne产生的一系列调用中得到了FileNotFoundException。我从我的桌面运行此发行版本,模拟帐户也没有完全访问权限。我将发布文件夹移动到C盘,运行正常。 在我的例子中,这个代码是为允许多次登录尝试的登录对话框执行的。由于上述原因,它第一次失败,但下一次成功,这似乎很奇怪。我只能假设FindOne第二次最终遵循不同的路径,但此时我还没有真正找到确切的问题。在我的情况下访问问题是有道理的,所以我只是不会从那里跑。 也许这比其他解决方案更能为他人提供线索。