Azure Functions System.Net.Primitives:值不能为空。 (参数“主机”)

Posted

技术标签:

【中文标题】Azure Functions System.Net.Primitives:值不能为空。 (参数“主机”)【英文标题】:Azure Functions System.Net.Primitives: Value cannot be null. (Parameter 'host') 【发布时间】:2022-01-08 16:58:26 【问题描述】:

当我向函数发送 HTTP 请求时,它会在控制台输出上显示此错误,并返回 HTTP 500 状态代码,而不会到达函数第一行的断点。

执行“验证”(失败,Id=548b4612-42f8-4e49-886a-da6888045c32, 持续时间 = 343 毫秒)System.Net.Primitives:值不能为空。 (参数“主机”)发生了未处理的主机错误。 System.Net.Primitives:值不能为空。 (参数“主机”)。

功能

[FunctionName("Validate")]
public async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] string req,
[SignalR(HubName = "PubSub")] IAsyncCollector<SignalRMessage> signalRMessageQueue)

    ...


host.json


"version": "2.0",
"logging": 
  "applicationInsights": 
    "samplingExcludedTypes": "Request",
    "samplingSettings": 
      "isEnabled": true
    
  


.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
    <RootNamespace>ZulaMobile.Lobby.StoreValidation</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.30" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.SignalRService" Version="1.6.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.21" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\zulamobile-azure-lobby-common\zulamobile-azure-lobby-common.csproj" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Functions\CafeBazaar\" />
    <Folder Include="Huawei\" />
  </ItemGroup>
</Project>

【问题讨论】:

您能从 csproj 发布您的依赖项吗? @misha130 我添加了整个 .csproj。 这只发生在本地,对吧? 是的,我还没有在 Azure 上尝试过。 @AjayKumarGhose-MT 嗨,Ajay,据我所知,这是一个 DI 问题。于是解决了。抱歉回复晚了。 【参考方案1】:

我尝试重现相同的问题,但最终效果很好。 接下来是这个MS DOC & 演示GitHub 项目,

在 Azure 门户中创建了 Signal IR。

从我的 VS Code 打开下载文件夹-

并将以下包添加到我的本地这是我的.csproj 文件

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.SignalRService" Version="1.6.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
  </ItemGroup>
  <ItemGroup>
    <None Update="content\index.html">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

并确保您已在 local settings.json 中添加连接字符串,该字符串必须从 Azure signalIR &gt; Keys&gt;Connection string. 的门户网站复制

以下是一些截图供参考输出:

注意:如果仍然遇到同样的问题,您可以尝试卸载 Azure function V3 并重新安装。

更多信息请参考SO THREAD。

【讨论】:

以上是关于Azure Functions System.Net.Primitives:值不能为空。 (参数“主机”)的主要内容,如果未能解决你的问题,请参考以下文章

AZURE_FUNCTIONS_ENVIRONMENT 与 ASPNETCORE_ENVIRONMENT

Azure Functions 与 Azure 流分析

使用“apollo-server-azure-functions”的 Apollo 订阅

在 Java 中使用 Visual Studio Code 的 Azure Functions 项目

Azure Functions 未在本地创建 Azure 表列

Azure Functions - 根据事件类型阻止处理 Azure 服务总线消息