在我的开发电脑上,即使是一个简单的 ASPX 页面也会收到一个奇怪的 IIS 错误(Windows 10 Professional,IIS 10):
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test Page</title>
</head>
<body>
<h1>Testing</h1>
</body>
</html>
任何 ASPX 页面(包括以上页面)都会返回 500 错误,并出现以下异常/堆栈跟踪:
[IOException: The file cannot be accessed by the system.
]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +1143
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, Boolean useLongPath, Boolean checkHost) +1242
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +126
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.Compiler.get_CompilerName() +130
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.Compiler.FromFileBatch(CompilerParameters options, String[] fileNames) +826
Microsoft.CodeDom.Providers.DotNetCompilerPlatform.Compiler.CompileAssemblyFromFileBatch(CompilerParameters options, String[] fileNames) +185
System.Web.Compilation.AssemblyBuilder.Compile() +2032
System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +357
System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) +12029645
System.Web.Compilation.BuildManager.CompileGlobalAsax() +52
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +341
[HttpException (0x80004005): The file cannot be accessed by the system.
]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +76
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +631
System.Web.Compilation.BuildManager.CallAppInitializeMethod() +38
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +758
[HttpException (0x80004005): The file cannot be accessed by the system.
]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +552
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +122
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +737
大约 6 天前,该系统运行正常:唯一的变化是最新 Windows 更新(版本 1903)--是的,没有排除这种可能性。
旧的 .ASP 页面可以正确加载,并且我已验证系统正在加载/访问 ASPX 配置文件(web.config、global.asax 等)。
也尝试卸载/重新安装 IIS,但无济于事。
答案1
找到了!天哪:我的 IIS 目录路径包含在 dropbox 中,而 dropbox 决定智能同步一些 roslyn 文件。因此 IIS 无法访问它们,因为名称只是占位符。