Smidge 3.0.0获取脚本/CSS报500错误:InternalCreateDirectory异常求助
我之前也碰到过类似的Smidge缓存权限问题,给你几个针对性的排查和修复步骤:
检查缓存目录的读写权限
Smidge默认会在网站根目录下创建wwwroot/smidge或配置指定的缓存目录,务必确保运行网站的应用程序池身份(比如IIS的AppPoolIdentity,或是开发服务器的运行身份)对这个目录拥有读写权限。如果是开发环境用IIS Express,右键项目选择「属性」->「Web」,确认服务器运行身份的权限足够。你也可以手动创建该目录,然后给对应用户添加修改、写入权限。验证Smidge的配置设置
打开appsettings.json(或你的项目配置文件),检查Smidge的缓存路径配置是否正确,示例配置如下:"Smidge": { "Cache": { "Folder": "wwwroot/smidge-cache" } }确保该路径是网站可访问的,且目录已存在(若不存在,可手动创建后再测试)。另外,要检查是否有自定义授权策略误应用到了Smidge的路由上——Smidge的路由默认允许匿名访问,如果你在Startup/Program.cs中添加了全局授权,需要排除Smidge的路径:
app.UseAuthorization(); app.MapSmidgeRoutes(); // 若使用全局授权,需排除Smidge路径: app.UseWhen(context => !context.Request.Path.StartsWithSegments("/sb"), appBuilder => { appBuilder.UseAuthorization(); });清理缓存并重启服务
如果之前有残留的缓存文件或权限异常,先删除Smidge缓存目录下的所有文件,然后重启Web应用(开发环境可重启VS或IIS Express),让Smidge重新创建缓存文件和目录。检查开发服务器的运行身份
如果你用的是Visual Studio自带的IIS Express,有时它的运行身份权限不足,可以尝试以管理员身份运行Visual Studio,再启动项目测试。如果用Kestrel,确保启动Kestrel的用户对缓存目录有读写权限。查看详细错误日志
500错误的详细信息能帮你精准定位问题,你可以在appsettings.json中调高日志级别:"Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning", "Smidge": "Debug" } }之后查看输出窗口或日志文件,找到Smidge相关的错误信息,就能明确是目录创建失败还是文件写入被拒绝等具体问题。
内容的提问来源于stack exchange,提问作者Sat Thiru

