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

本地正常的Graph API+Owin站点部署Azure报错:找不到指定文件

解决Azure部署后Owin+Graph API出现的NetworkInformationException错误

从你的错误堆栈和代码来看,这个问题是Azure App Service沙箱环境的限制导致的:当Owin的OpenIdConnect中间件初始化WebRequestHandler时,会触发CookieContainer的构造,而这个构造过程会调用System.Net.NetworkInformation.SystemIPGlobalProperties.GetFixedInfo()——这个API在Azure的沙箱里无法访问到所需的系统文件,所以抛出了"找不到指定文件"的异常。

本地运行正常是因为本地环境没有沙箱限制,可以正常访问这些系统资源。

下面是几个可行的解决方案:

1. 自定义OpenIdConnect的HttpMessageHandler

在你的ConfigureAuth方法中,手动指定HttpMessageHandler为普通的HttpClientHandler,并禁用自动Cookie处理(如果你的场景不需要自动管理Cookie的话),避免触发有问题的初始化逻辑:

using Microsoft.Owin.Security.OpenIdConnect;
using System.Net.Http;

// 在ConfigureAuth方法内
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
    // 保留你原有的ClientId、Authority、RedirectUri等配置
    ClientId = "你的ClientId",
    Authority = "https://login.microsoftonline.com/你的租户ID/v2.0",
    RedirectUri = "你的回调地址",
    // ...其他配置项

    // 添加这部分配置,替换默认的WebRequestHandler
    HttpMessageHandler = new HttpClientHandler
    {
        UseCookies = false, // 禁用自动Cookie处理,避免触发CookieContainer初始化
        // 如果你的场景需要Cookie,可以尝试手动创建CookieContainer,但建议先测试禁用的情况
        // CookieContainer = new CookieContainer()
    }
});

2. 升级相关NuGet包

检查你的项目中以下NuGet包的版本,升级到最新稳定版:

  • Microsoft.Owin.Security.OpenIdConnect
  • Microsoft.Owin.Host.SystemWeb
  • Owin

新版本的库可能已经针对Azure沙箱环境做了兼容优化,避免了对受限API的调用。

3. 确认Azure App Service的.NET Framework版本

确保你的App Service配置的运行时是**.NET Framework 4.7.2及以上版本**:

  1. 登录Azure门户,进入你的App Service
  2. 在左侧菜单选择"配置" -> "常规设置"
  3. 检查".NET Framework版本",如果是旧版本(比如4.6.x),升级到4.7.2或更高

旧版本的框架在Azure沙箱中更容易出现这类系统API访问的兼容性问题。

修改完成后重新部署到Azure,应该就能解决这个异常了。

内容的提问来源于stack exchange,提问作者구자룡

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:07:53