【问题标题】:GET of smidge'd scripts/css fails with 500 error - InternalCreateDirectory throws获取 smidge'd 脚本/css 失败并出现 500 错误 - InternalCreateDirectory 抛出
【发布时间】:2018-04-25 04:16:31
【问题描述】:

Smidge 3.0.0

我正在按照https://github.com/Shazwazza/Smidge 中的说明前往发球台。但是还没有能够为我工作。我在捆绑 js/css 文件的 GET 上收到 500 错误。在 Chrome 调试器中进行了一些挖掘之后,我发现该错误似乎与 Smidge 无法创建缓存文件夹有关。这是堆栈 - 我只是尝试像这样导航到捆绑 JS 文件来复制它:

GET http://localhost:8241/sb/app-scripts.js.v3

结果:

UnauthorizedAccessException:对路径“C:\Users\USERNAME\source\repos\PROJECTNAME\App_Data\Smidge\Cache\MACHINENAME\3”的访问被拒绝。 System.IO.__Error.WinIOError(int errorCode, string maybeFullPath) System.IO.Directory.InternalCreateDirectory(string fullPath, string path, object dirSecurityObj, bool checkHost) System.IO.Directory.InternalCreateDirectoryHelper(字符串路径,bool checkHost) Smidge.FileSystemHelper.GetCacheFilePath(IWebFile 文件, bool fileWatchEnabled, 字符串扩展, ICacheBuster cacheBuster, out Lazy fileInfo) Smidge.FileProcessors.PreProcessManager+d__7.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Smidge.FileProcessors.PreProcessManager+d__6.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Smidge.FileProcessors.PreProcessManager+d__5.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Smidge.Controllers.SmidgeController+d__7.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) lambda_method(闭包,对象) Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+d__12.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+d__10.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext 上下文) Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted) Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker+d__14.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+d__22.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext 上下文) Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted) Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+d__17.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+d__15.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Microsoft.AspNetCore.Builder.RouterMiddleware+d__4.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Microsoft.AspNetCore.Builder.RouterMiddleware+d__4.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Microsoft.AspNetCore.Authentication.AuthenticationMiddleware+d__6.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware+d__7.MoveNext()

【问题讨论】:

  • 可能 IIS 正在使用不同的帐户,当它尝试访问您用户的文件夹时,由于权限不足而失败。
  • 是的,实际上就是这样。这是因为我作为 NETWORK SERVICE 运行的 aspnetcore EXE 没有足够的权限在解决方案文件夹中创建文件夹/文件。如您所见,我的存储库位于 c:/users 文件夹中(VS 默认放置存储库的位置)。本地组“ServiceFabricAllowedUsers”确实包含网络服务帐户,但该组也没有对我的解决方案文件夹的写入权限。我将此本地组的 WRITE 权限授予该文件夹并解决了它。我在 smidge git repo 上发布了一个新问题,并要求记录/修复这个问题。

标签: asp.net-core bundling-and-minification smidge


【解决方案1】:

IIS 在不同的帐户上运行,它无权写入您的配置文件文件夹。更改应用程序,使其不必访问配置文件文件夹或需要特定权限的文件夹。

【讨论】:

    猜你喜欢
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多