2014-09-15 3 views
11

से Google एपीआई को कॉल करते समय अमान्य प्रतिक्रिया जब मैं एक एज़ूर वेबसाइट से Google एपीआई को कॉल करता हूं, तो मुझे 502 मिल जाता है - गेटवे या प्रॉक्सी सर्वर के रूप में कार्य करते समय वेब सर्वर को अमान्य प्रतिक्रिया मिली। सटीक कोड मेरी स्थानीय मशीन के साथ-साथ एक एज़ूर वीएम दोनों से भी काम करता है।502 अज़ुर वेबसाइट

कोड एक गूगल प्रयोक्ता आईडी

private string GetUserDetails(string userId) 
{ 
    var serviceAccountEmail = "[email protected]nt.com"; 
    var certFile = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/googlekey.p12"); 
    var certificate = new X509Certificate2(certFile, "notasecret", X509KeyStorageFlags.Exportable); 

    var credential = new ServiceAccountCredential(
     new ServiceAccountCredential.Initializer(serviceAccountEmail) 
     { 
      Scopes = new[] { PlusService.Scope.PlusMe } 
     }.FromCertificate(certificate)); 

    var service = new PlusService(new BaseClientService.Initializer() 
    { 
     HttpClientInitializer = credential, 
     ApplicationName = "Bayfront" 
    }); 

    var request = service.People.Get(userId); 
    var person = request.Execute(); 
    return person.DisplayName; 
} 

यह एक WebAPI परियोजना में बुलाया जा रहा था से एक प्रदर्शन नाम प्राप्त करने के लिए बस है, लेकिन मैं http://testgplus.azurewebsites.net/ पर एक ही पृष्ठ asp.net वेब फार्म के लिए यह निकाला है

मैंने उपरोक्त उपयोग करने के बजाय एक एपीकी के साथ एक साधारण आरईएसटी क्लाइंट की भी कोशिश की है। फिर यह वीएम पर काम करता है, लेकिन वेब साइट पर नहीं, जहां मुझे 403 निषिद्ध मिलता है। मैंने Google डेवलपर कंसोल में वीएम को वेबसाइट & वेबसाइट के आईपी पते जोड़े हैं।

private string GetUserDetails2(string userId) 
{ 
    var client = new RestClient("https://www.googleapis.com/plus/v1/people/" + userId); 
    var request = new RestRequest(Method.GET); 
    request.AddParameter("key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
    var response = client.Execute(request); 
    if (response.StatusCode == HttpStatusCode.OK) 
    { 
     dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(response.Content); 

     return result["name"]["givenName"]; 
    } 
    return response.StatusCode.ToString(); 
} 

ऐसा लगता है कि मैं एक Azure वेबसाइट के लिए बाहरी वेब सेवा नहीं कह सकता। मैंने कुछ समान मुद्दों को देखा है, उदा। 502 requesting payment service inside azure 'website', लेकिन कोई भी सुझाव काम नहीं किया है। क्या किसी को कोई कारण या फिक्स हो सकता है पर कोई विचार है?

उत्तर

1

। हाय कॉलिन Mierowsky

आप एप्लिकेशन_स्टार्ट, या WebApiConfig रजिस्टर विधि में प्रमाणपत्र कहां बनाते हैं?

जहां इस कोड का उपयोग है?

makecert -r -n "CN=abdullahsargin.com, [email protected]" -sky exchange -b 11/01/2015 -pe -sv myhost.pvk myhost.cer 

pvk2pfx -pvk myhost.pvk -spc myhost.cer -pfx myhost.pfx -po Test.123 

Global.asax में

  try 
     { 
      var certFile = Server.MapPath("~/App_Data/myhost.pfx"); 
      var cert = new X509Certificate2(certFile, "Test.123", 
       X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable); 
     } 
     catch (Exception exc) 
     { 
      _tools.LogError(exc); 
     } 

Application_Start। इस विधि स्थानीय पर लेकिन नीला में इस कोड पर 502 प्राप्त सफलता से चल रहा है, मैं इस विधि पंक्ति का परीक्षण करने और इस पेज मेरा समाधान

पर पंक्ति

var code = await _userManager.GeneratePasswordResetTokenAsync(user.Id); 

इस विधि

[HttpGet, AllowAnonymous] 
    public async Task<HttpResponseMessage> ForgotPassword([FromUri] ForgotPasswordViewModel model) 
    { 
     try 
     {    
      var code = await _userManager.GeneratePasswordResetTokenAsync(user.Id); 

      return Request.CreateResponse(HttpStatusCode.OK, new { model = user }); 

      var url = "http://abdullahsargin.com#/account/resetPassword/" + user.Id + "/" + code; 

      await _userManager.SendEmailAsync(user.Id, "Reset Password", 
      "Please reset your password by clicking here: <a href=\"" + url + "\">link</a>"); 

      return Request.CreateResponse(HttpStatusCode.OK); 
     } 
     catch (Exception exc) 
     { 
      MyTools.LogError(exc.GetBaseException()); 
      return Request.CreateResponse(HttpStatusCode.BadRequest, exc.GetBaseException()); 
     } 
    } 

मैं लगता है की पूरी

ASP.NET Identity: use GeneratePasswordResetToken on Azure website

मेरे समाधान के लिए

public UserManager() : base(new UserStore<ApplicationUser>(new MyDbContext())) 
{ 
    // other setup 
    this.UserTokenProvider = new TotpSecurityStampBasedTokenProvider<ApplicationUser, string>(); 
} 
4

मैंने पहले अपने प्रश्न देखा, लेकिन समाधान पर ध्यान नहीं था ... मैं इसे अब भी है .. जब प्रमाण पत्र ऐड पैदा:

var certificate = new X509Certificate2(p12Path, "notasecret", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable); 
//(notice the X509KeyStorageFlags.MachineKeySet |) 
संबंधित मुद्दे