Can't access httpcontext extension methods in .net standard
Asked Answered
W

1

5

I have this .NET Standard library where I want to write a .NET Core middleware.

Inside which I want to do :

Endpoint endpoint = httpContext.GetEndpoint();

The GetEndpoint() extension method can't be resolved.

I have referenced Microsoft.AspNetCore.Http and I have both Microsoft.AspNetCore.Http.Abstractions and Microsoft.AspNetCore.Mvc.Core packages added to the project.

Is there a solution to this, am I missing something?

Worthwhile answered 17/5, 2020 at 6:26 Comment(4)
try installing this nuget linkMalliemallin
@neeleshbodgal Doesn't work.Worthwhile
try to add this nuget.org/packages/Microsoft.AspNetCore.Http.Abstractions/2.2.0 This package work for meHeall
@Md.Asaduzzaman : As stated in the question, that was already added. Does it work for you in a .Net Standard project ?Worthwhile
C
16

I assume you're writing a middleware for ASP.NET Core 3.1 since you included the "asp.net-core-3.1" tag.

To use that extension, you need to target netcoreapp3.* instead of netstandard2.*:

<TargetFramework>netcoreapp3.1</TargetFramework>

(You can see which ASP.NET Core versions that extension is available for in the dropdown menu on the documentation page)

You will also need to either:

  1. use the Microsoft.NET.Sdk.Web MSBuild SDK:
    <Project Sdk="Microsoft.NET.Sdk.Web">
    
  2. or add the framework reference:
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    

Reference: Use ASP.NET Core APIs in a class library

Copaiba answered 17/5, 2020 at 7:58 Comment(3)
That's what I've just realized, those extensions aren't available in .Net standard, I had to target core 3.1 Complete answer, accepting, upvoting.Worthwhile
+1. This answer is also useful when trying to use GetEnpoint in a class library (as opposed to using it in a Web API project). Unfortunately, simply adding the Microsoft.AspNetCore.Http.Abstractions as indicated here is not enough.Talapoin
"With the release of .NET Core 3.0, many ASP.NET Core assemblies are no longer published to NuGet as packages. Projects using the Microsoft.NET.Sdk or Microsoft.NET.Sdk.Razor SDK must reference ASP.NET Core to use ASP.NET Core APIs in the shared framework." Quote from Microsoft(learn.microsoft.com/en-us/aspnet/core/fundamentals/…) Add following lines to your .csproj file <ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup>Behan

© 2022 - 2024 — McMap. All rights reserved.