5

के लिए बेसकंट्रोल कॉन्टेक्स्ट "दावे ..... 'टाइप करने के लिए' संदर्भ का संदर्भ 'कैसे हल करूं। मुझे अजीब समस्या का सामना करना पड़ रहा है। मैं पढ़ रहा हूं और OpenID Connect server with ASOS इस लेख को ASOS - AspNet.Security.OpenIdConnect.Server बना रहा हूं।मैं AspNet.Security.OpenIdConnect.Server

मैं बस नया नमूना समाधान बनाया है और OpenIdConnectServerProvider के नए उपवर्ग AuthorizationProvider वर्ग जोड़ा गया है और आभासी विधि ओवरराइड i.e. ExtractAuthorizationRequest

AuthorizationProvider.cs

public class AuthorizationProvider : OpenIdConnectServerProvider 
{ 
    public override Task ExtractAuthorizationRequest(ExtractAuthorizationRequestContext context) 
    { 
     // If a request_id parameter can be found in the authorization request, 
     // restore the complete authorization request stored in the user session. 
     if (!string.IsNullOrEmpty(context.Request.RequestId)) 
     { 
      var payload = context.HttpContext.Session.Get(context.Request.RequestId); 
      if (payload == null) 
      { 
       context.Reject(
        error: OpenIdConnectConstants.Errors.InvalidRequest, 
        description: "Invalid request: timeout expired."); 
       return Task.FromResult(0); 
      } 
      // Restore the authorization request parameters from the serialized payload. 
      using (var reader = new BsonReader(new MemoryStream(payload))) 
      { 
       foreach (var parameter in JObject.Load(reader)) 
       { 
        // Avoid overriding the current request parameters. 
        if (context.Request.HasParameter(parameter.Key)) 
        { 
         continue; 
        } 
        context.Request.SetParameter(parameter.Key, parameter.Value); 
       } 
      } 
     } 
     return Task.FromResult(0); 
    } 
} 

अंक: जैसे ही मैं जोड़ने के रूप में Microsoft.AspNetCore.Identity (2.0.0) मेरी परियोजना में NuGet पैकेज, context.Reject निम्न त्रुटि देने शुरू करें

"बेसकंट्रोल कॉन्टेक्स्ट टाइप करने के संदर्भ" का दावा है कि इसे माइक्रोसॉफ्ट.एस्पनेट कॉर। प्रमाणीकरण में परिभाषित किया गया है, लेकिन यह नहीं मिला।

लेकिन जैसे ही मैं Microsoft.AspNetCore.Identity NuGet निर्भरता को हटा देता हूं, त्रुटि दूर हो जाती है और सभी ठीक दिखते हैं।

नोट:

  1. मैं वी.एस. 2017
  2. उपयोग कर रहा हूँ मैं dotnetcore 2.0 SDK का उपयोग कर रहा हूँ।
  3. मैंने .NET Core 2.0 का उपयोग करके समाधान बनाया।

उत्तर

2

एएसपी.NET कोर 2.0 के प्रमाणीकरण ढेर में भारी बदलाव किए गए हैं। परिवर्तन इतना महत्वपूर्ण हैं कि एएसपी.नेट कोर 1.x के लिए लिखे गए सभी प्रमाणीकरण मिडलवेयर संगत नहीं हैं (जिसमें सभी एस्पनेट-कॉन्ट्रिब प्रोजेक्ट शामिल हैं)।

अधिक जानकारी के लिए आप https://github.com/aspnet/Announcements/issues/262 पढ़ सकते हैं।

अच्छी खबर यह है कि हमारे पास एएसओएस के एएसपी.NET कोर 2.0 आरटीएम-संगत संस्करण है। आप एस्पनेट-कॉन्ट्रिब माईगेट फ़ीड (https://www.myget.org/F/aspnet-contrib/api/v3/index.json) पर 2.0.0-preview1-* बिट्स पा सकते हैं।

+0

आपकी टिप्पणियों के लिए धन्यवाद – immirza

+0

क्या इसका यह भी अर्थ है कि मैं माइक्रोसॉफ्ट आधिकारिक दिशानिर्देश के अनुसार UseOwin विधि का उपयोग कर IAplicationBuilder में IAppBuilder को कार्यान्वित नहीं कर सकता? क्या आप इस प्रश्न पर एक नज़र डाल सकते हैं कृपया https://stackoverflow.com/questions/45847623/unable-to-configuer-iapplicationbuilder-useowin – immirza

+0

@immirza मुझे यकीन नहीं है कि मैं आपका प्रश्न समझता हूं। एएसपी.नेट कोर (1.x या 2.x) के लिए एएसओएस ओविन पर निर्भर नहीं है, इसलिए आपको इसे काम करने के लिए एडाप्टर की आवश्यकता नहीं है (यह मूल एएसपी.नेट कोर घटक है)। – Pinpoint