代码之家  ›  专栏  ›  技术社区  ›  Alex Gordon

正在读取请求的内容-readasstringasync()

  •  -2
  • Alex Gordon  · 技术社区  · 6 年前

    我正试图这样阅读请求的内容:

    var translation = await req.Content.ReadAsStringAsync();

    但得到这个例外:

    enter image description here

    严重性代码描述项目文件行禁止显示状态 错误CS1061“httpRequest”不包含“content”的定义 并且没有可访问的扩展方法“content”首先接受 找不到“httpRequest”类型的参数(是否缺少using 指令或程序集引用?)

    以下是我使用的库:

    enter image description here

    我做错什么了? 如何阅读内容的正文?

    这是周围的代码:

        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "OnTranslateSingleHttpTriggered")] HttpRequest req,
            ILogger log)
        {
            var translation = await req.Content.ReadAsStringAsync();
            //do work
        }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Jerry Liu Phantom    6 年前

    正如@garr所提到的,内容是httpRequestMessage的属性。在以.NET核心2为目标的v2函数中,我们通常使用httpRequest和read内容,如下所示。

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    

    更新

    运行时2.0.12265已提供给vs用户,请随意使用.NET核心2.2。


    还请注意,支持.NET核心2.2的原因是 runtime v2.0.12265 但是运行时更新并没有在任何地方推广,即我们仍然在本地使用旧的更新。所以还原 Microsoft.AspNetCore.Mvc 包装到 2.1.0 否则我们可能会出错。( Microsoft.AspNetCore.Http 被引用 Microsoft.NET.Sdk.Functions 因此无需再次安装)

    您的项目文件(右键单击项目, Edit <FunctionProjectName>.csproj )应该像这样

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <AzureFunctionsVersion>v2</AzureFunctionsVersion>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.0" />
        <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
        <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
        <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
      </ItemGroup>
      <ItemGroup>
        <None Update="host.json">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="local.settings.json">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
          <CopyToPublishDirectory>Never</CopyToPublishDirectory>
        </None>
      </ItemGroup>
    </Project>