部署于IIS的NuGet.Server本地访问正常 远程访问报空引用错误如何解决
问题根因
该空引用异常由两个原因共同触发:一是IIS身份模拟开启导致依赖注入容器初始化失败,ServiceResolver.Current实例为空;二是NuGet.Server默认禁止远程访问管理页面,远程请求触发了权限校验逻辑的异常分支。
解决方案
按以下步骤操作即可修复:
1. 调整IIS匿名身份验证配置
- 打开IIS管理器,进入NuGet.Server站点的「身份验证」设置页
- 右键点击「匿名身份验证」选择「编辑」
- 勾选「应用池标识」选项,取消原有「特定用户」的选中状态,保存配置
2. 开启远程访问权限
打开站点根目录下的web.config文件,在appSettings节点下新增配置项:
<add key="allowRemoteCacheManagement" value="true" />
3. 重启服务生效
重启对应站点及关联的应用池,清除客户端浏览器缓存后重新访问即可。
可选验证项
如果修改后仍有报错,补充检查以下配置:
- 确认站点下的
Packages存储目录,已给对应应用池的运行身份(格式为IIS AppPool\你的应用池名称)赋予读取、写入权限 - 确认服务器上部署的程序文件和本地开发编译的版本一致,没有遗漏依赖的NuGet包相关文件
内容的提问来源于stack exchange,提问作者mRizvandi
相关产品推荐
相关产品推荐

