Laden...

Klasse wird nicht gefunden, warum?

Erstellt von TotalerASPNETN00B vor 2 Jahren Letzter Beitrag vor 2 Jahren 567 Views
T
TotalerASPNETN00B Themenstarter:in
20 Beiträge seit 2021
vor 2 Jahren
Klasse wird nicht gefunden, warum?

Hallo liebe Community,

dies ist mein erstes Thema in diesem Forum 🙂

ich möchte gerne einen Webhook für Sharepoint coden, und habe mir auf den Seiten von Microsoft die Sachen mit Webhooks durchgelesen https://docs.microsoft.com/de-de/sharepoint/dev/apis/webhooks/get-started-webhooks (Docs)

Aber nachdem ich ein "leeres" ASP Net (mit .Net Framework 4.5) bei Azure registiert hab und die empfohlenen Abhängigkeiten hinzugefügt hab bekomme ich bei TokenValidationParameters einen Compiler Fehler CS0246

Fehlermeldung:
Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler CS0246 Der Typ- oder Namespacename "TokenValidationParameters" wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis). WebApplication C:\Users\User\source\repos\WebApplication\WebApplication\App_Start\Startup.Auth.cs 22 Aktiv

Die "Problem" Klasse


using System;
using System.Collections.Generic;
using System.Configuration;
using System.IdentityModel;
using Microsoft.IdentityModel;
using System.Linq; 
using Microsoft.Owin.Security;
using Microsoft.Owin.Security.ActiveDirectory;
using Owin;

namespace WebApplication
{
    public partial class Startup
    {
        public void ConfigureAuth(IAppBuilder app)
        {
            app.UseWindowsAzureActiveDirectoryBearerAuthentication(
                new WindowsAzureActiveDirectoryBearerAuthenticationOptions
                {
                    Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                    TokenValidationParameters = new TokenValidationParameters {
                         ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
                    },
                });
        }
    }
}


und die packages config


<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net45" />
  <package id="AppForSharePointOnlineWebToolkit" version="3.1.2" targetFramework="net45" />
  <package id="AppForSharePointWebToolkit" version="3.1.5" targetFramework="net45" />
  <package id="bootstrap" version="3.4.1" targetFramework="net45" />
  <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
  <package id="jQuery" version="3.4.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc.de" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor.de" version="3.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization.de" version="1.1.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client.de" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core.de" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost.de" version="5.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages.de" version="3.2.7" targetFramework="net45" />
  <package id="Microsoft.Azure.ActiveDirectory.GraphClient" version="2.1.0" targetFramework="net45" />
  <package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net45" />
  <package id="Microsoft.Data.Edm" version="5.8.4" targetFramework="net45" />
  <package id="Microsoft.Data.OData" version="5.8.4" targetFramework="net45" />
  <package id="Microsoft.Data.Services.Client" version="5.8.4" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.JsonWebTokens" version="6.12.0" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.Logging" version="6.12.0" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.Protocol.Extensions" version="1.0.4.403061554" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.Protocols" version="5.5.0" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.Protocols.WsFederation" version="5.5.0" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.Tokens" version="6.12.0" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.Tokens.Saml" version="5.5.0" targetFramework="net45" />
  <package id="Microsoft.IdentityModel.Xml" version="5.5.0" targetFramework="net45" />
  <package id="Microsoft.Owin" version="4.2.0" targetFramework="net45" />
  <package id="Microsoft.Owin.de" version="4.2.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="4.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Host.SystemWeb.de" version="4.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Security" version="4.2.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.ActiveDirectory" version="3.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.ActiveDirectory.de" version="3.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.de" version="4.2.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Jwt" version="3.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.Jwt.de" version="3.1.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Security.OAuth" version="4.2.0" targetFramework="net45" />
  <package id="Microsoft.SharePointOnline.CSOM" version="16.1.5521.1200" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Microsoft.WindowsAzure.ConfigurationManager" version="3.2.3" targetFramework="net45" />
  <package id="Modernizr" version="2.8.3" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
  <package id="Owin" version="1.0" targetFramework="net45" />
  <package id="SharePointPnPCoreOnline" version="2.6.1608.0" targetFramework="net45" />
  <package id="System.IdentityModel.Tokens.Jwt" version="4.0.4.403061554" targetFramework="net45" />
  <package id="System.Spatial" version="5.8.4" targetFramework="net45" />
  <package id="WebGrease" version="1.6.0" targetFramework="net45" />
  <package id="WindowsAzure.Storage" version="9.3.3" targetFramework="net45" />
</packages>

Über Hilfe würde ich mich sehr freuen 🙂

16.834 Beiträge seit 2008
vor 2 Jahren

Googelt man 10 Sekunden 😉 nach TokenValidationParameters, dann sieht man sofort die Microsoft Doku und den Hinweis, dass sich die Klasse im Namespace Microsoft.IdentityModel.Tokens befindet.
Du hast aber kein using für diesen Namespace, ergo kann die Klasse auch nicht gefunden werden und es kommt zum Fehler.

Der Fehler gibt Dir auch gleich den Lösungshinweis!

möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis

Siehe auch Grundlagen C# und Namespaces sowie [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)

PS: Dein eingesetztes Template

Aber nachdem ich ein "leeres" ASP Net (mit .Net Framework 4.5)

ist bereits sehr veraltet und schon lange lange lange abgekündigt.
Die aktuelle Technologie nennt sich ASP.NET Core und verwendet nicht mehr das .NET Framework (das generell abgekündigt ist).

T
TotalerASPNETN00B Themenstarter:in
20 Beiträge seit 2021
vor 2 Jahren

Hallo danke für die Rückmeldung,

die Klasse wurde selbst angelegt (also nicht von mir)
Es wundert mich das bei einer so einer Art von Klasse so Sachen fehlen^^
und nachdem ich das fehlende Using hinzugefugt habe bekomme ich einen Compiler Error CS0029

Fehlermeldung:
Fehler CS0029 Der Typ "Microsoft.IdentityModel.Tokens.TokenValidationParameters" kann nicht implizit in "System.IdentityModel.Tokens.TokenValidationParameters" konvertiert werden.

ich habe dabei ein ungutes gefühl wenn ich eine vorgefertigte Klasse ändere.

und wenn ich alles in ASP Net Core neu erstelle kann ich auch die Packete von NuGet nutzen ?

16.834 Beiträge seit 2008
vor 2 Jahren

Du kannst in .NET Framework, .NET Standard und in .NET Core (was ab .NET 5 nur noch .NET heisst) NuGet Pakete verwenden.
Das siehst Du bei jedem Paket auch anhand der Kompatibilitätsdetails.

Dein hier gezeigter Fehler sagt, dass Du zwei verschiedene Klassen hast; die zufällig gleich heissen aber in zwei verschiedenen Namespaces liegen - und damit nicht identisch sind.
Musst immer die Klasse aus dem richtigen Namespace verwenden. War der erste Google Treffer nich ganz passend.

In ASP.NET Core heisst das auch nicht mehr UseWindowsAzureActiveDirectoryBearerAuthentication sondern


      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
          .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

Für ASP.NET Core und Azure Active Directory gibt es hunderte, sehr ausführliche Beispiele, bei der eigentlich keine Fragen offen bleiben.
Achte darauf, dass Du die Microsoft Identity Plattform verwendest; das sind die aktuellen Schnittstellen für Azure AD.
https://docs.microsoft.com/de-de/aspnet/core/security/authentication/azure-active-directory/?view=aspnetcore-5.0