【发布时间】: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