【问题标题】:ASP.net migration from 2.2 to 3.1ASP.net 从 2.2 迁移到 3.1
【发布时间】:2021-08-18 12:06:48
【问题描述】:
if (((Microsoft.AspNetCore.Http.Internal.DefaultHttpRequest)HttpContext.Request).Method == "GET")
{
//code
}

命名空间“Microsoft.AspNetCore.Http”中不存在类型或命名空间名称“Internal”(您是否缺少程序集引用?

这是我当前的包引用

 <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="3.1.1" />
    <PackageReference Include="Microsoft.Azure.ActiveDirectory.GraphClient" Version="2.1.1" />
    <PackageReference Include="Microsoft.CodeCoverage" Version="16.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.1.11" />
    <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="5.0.9" />
    <PackageReference Include="Microsoft.IdentityModel" Version="7.0.0" />
    <PackageReference Include="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="5.2.9" />
    <PackageReference Include="Microsoft.Owin" Version="4.2.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.2.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.0" />
    <PackageReference Include="NWebsec.AspNetCore.Middleware" Version="2.0.0" />
  </ItemGroup>

【问题讨论】:

  • if 语句的上下文是什么?你在哪里使用它?
  • 你为什么要选角?它应该像if (HttpContext.Request.Method == "GET") 一样工作......
  • Internal 命名空间就是这样 - 内部实现细节。它们可以随时被打破。

标签: c# asp.net-core


【解决方案1】:

来自link,参考serpent5所说的,

DefaultHttpRequest 已从 public 更改为 internal 作为 ASP.NET Core 3.0 发布,这意味着它不再可用。

在你的代码中,你使用(Microsoft.AspNetCore.Http.Internal.DefaultHttpRequest)HttpContext.Request).Method== "GET"。你可以尝试使用HttpContext.Request.Method== "GET"而不使用DefaultHttpRequest。这里是HttpContext.RequestHttpRequest的官方链接。

【讨论】:

    猜你喜欢
    • 2020-05-27
    • 2020-06-18
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2021-04-13
    • 2020-05-28
    • 2020-04-06
    相关资源
    最近更新 更多