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

Azure Function调用System.Web.HttpUtility时程序集加载失败求助

问题解决:Azure Function使用System.Web.HttpUtility导致程序集加载失败

问题原因

System.Web.HttpUtility是.NET Framework专属类库,而Azure Function基于.NET Core/.NET 5+运行时,该环境不默认包含System.Web相关依赖,强行调用会触发找不到System.Collections.Specialized等依赖程序集的错误。

解决方案:改用.NET Core原生API

替换System.Web.HttpUtility.ParseQueryString的用法,使用.NET Core生态下的原生方法:

1. 解析请求自带的查询参数

如果要获取当前HTTP请求的查询参数,直接使用传入的HttpRequest req对象的Query属性即可:

// 获取单个参数
var param1 = req.Query["param1"];
// 遍历所有参数
foreach (var keyValuePair in req.Query)
{
    log.LogInformation($"{keyValuePair.Key}: {keyValuePair.Value}");
}

2. 解析自定义查询字符串

如果需要解析自定义的查询字符串(非请求自带),使用Microsoft.AspNetCore.WebUtilities.QueryHelpers类:

  • 先确保项目已安装Microsoft.AspNetCore.WebUtilities NuGet包
  • 修改代码如下:
using MasterProbaterRepo;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.WebUtilities; // 添加该命名空间
using Newtonsoft.Json;
using System.Threading.Tasks;

namespace MyNamespaceApi
{
    public static class MyPoco
    {
        private static IMyPocoService _repo = new MongoRepo(); 
        
        [FunctionName("GetMyPoco")]
        public static async Task<IActionResult> GetMyPocoAsync([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "myPoco")] HttpRequest req, ILogger log)
        {
            // 解析自定义查询字符串,支持带或不带前缀?
            var queryCollection = QueryHelpers.ParseQuery("?param1=aaa&param2=bbb");
            var param1 = queryCollection["param1"];
            var param2 = queryCollection["param2"];
            
            var myPoco = await _repo.GetMyPocoAsync();
            var json = JsonConvert.SerializeObject(myPoco);
            return new OkObjectResult(json);
        }
    }
}

3. 安装依赖包(若未安装)

如果项目中没有Microsoft.AspNetCore.WebUtilities,通过NuGet安装:

Install-Package Microsoft.AspNetCore.WebUtilities

或者在项目的.csproj文件中添加引用:

<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="7.0.11" />

(版本号请匹配你的Azure Function所使用的.NET版本)

内容的提问来源于stack exchange,提问作者inliner49er

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:27:55