You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何新增设备/浏览器访问时需重启IIS才能加载图片?

新电脑/新浏览器访问时需重启IIS才能加载共享目录图片的问题分析与解决

问题现象

当使用新电脑或新浏览器访问应用时,图片无法正常加载,必须重启IIS才能显示。重启前后的状态如下:

  • 重启IIS前:重启IIS前
  • 过渡状态:过渡状态
  • 重启IIS后:重启IIS后

当前使用的代码(Program.cs):

app.UseStaticFiles();
NetworkCredential sourceCredentials = new NetworkCredential { Domain = "192.168.84.2", UserName = "sonphat", Password = "it@smcl2019" };
using (new NetworkConnection(@"\\192.168.84.2\Public\ITM\SAPB1", sourceCredentials))
{
    app.UseStaticFiles(new StaticFileOptions()
    {
        FileProvider = new PhysicalFileProvider(
                    Path.GetFullPath(@"\\192.168.84.2\Public\ITM\SAPB1"))
    });
}

问题根源

核心问题是网络连接的生命周期与静态文件中间件不匹配:

  • using块仅在应用启动阶段执行一次,执行完成后NetworkConnection会被立即释放,对应的网络访问凭据也随之失效。
  • PhysicalFileProvider是被静态文件中间件长期持有的对象,每次处理请求(尤其是新客户端无缓存、需要读取原始文件时)都会用它访问共享目录,但此时已经没有有效的网络凭据,导致文件读取失败。
  • 重启IIS时应用重新启动,using块再次执行并短暂建立连接,此时刚好有请求进来就能完成文件读取,但连接释放后,后续新请求依然会遇到权限问题。

解决方案

方案1:修改应用程序池运行账户(推荐)

直接让IIS应用程序池的运行账户拥有共享目录的访问权限,无需在代码中手动处理网络连接:

  1. 打开IIS管理器,找到对应应用的应用程序池
  2. 右键选择「高级设置」
  3. 在「进程模型」区域修改「标识」为指定账户,输入你代码中的sonphat用户名和密码
  4. 重启应用程序池

修改后代码可简化为:

app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
    FileProvider = new PhysicalFileProvider(
                Path.GetFullPath(@"\\192.168.84.2\Public\ITM\SAPB1"))
});

方案2:在请求中间件中添加网络连接(适合无法修改应用池账户的场景)

通过自定义中间件,在每个请求处理时建立网络连接,确保访问共享目录时有有效凭据:

app.UseStaticFiles();

// 自定义中间件,在每个请求周期内维持网络连接
app.Use(async (context, next) =>
{
    NetworkCredential sourceCredentials = new NetworkCredential 
    { 
        Domain = "192.168.84.2", 
        UserName = "sonphat", 
        Password = "it@smcl2019" 
    };
    using (new NetworkConnection(@"\\192.168.84.2\Public\ITM\SAPB1", sourceCredentials))
    {
        await next.Invoke();
    }
});

app.UseStaticFiles(new StaticFileOptions()
{
    FileProvider = new PhysicalFileProvider(
                Path.GetFullPath(@"\\192.168.84.2\Public\ITM\SAPB1"))
});

该方式会在每个请求进来时建立网络连接,请求处理完成后自动释放,确保每次访问共享目录都有合法权限。

内容的提问来源于stack exchange,提问作者Phát Sơn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:43:10