Service Management API lanciato su azure, problema

Answered Service Management API lanciato su azure, problema

  • mercoledì 11 gennaio 2012 10:07
     
      Contiene codice

    ho caricato due certificati su azure.
    uno in management certificate e uno nei certificati del host service.

    se faccio un eseguibile da lanciarew dal pc le management API funzionano, se invece faccio un webservices e lo carico su azure mi dice che non c'è il certificato. Probailmente sbaglio a chiamarlo su azure.
    io faccio così

     

     X509Store certificateStore = new X509Store(StoreName.My,
    StoreLocation.CurrentUser);
                certificateStore.Open(OpenFlags.ReadOnly);
                X509Certificate2Collection certs =
    certificateStore.Certificates.Find(X509FindType.FindByThumbprint,
                    certThumbprint, false);
    
                if (certs.Count == 0)
                {
                    Console.WriteLine("Couldn't find the certificate with
    thumbprint:" + certThumbprint);
                    throw new DataServiceException(500,"Server Error", "no
    certificato","en-EN",null);
    
                    return;
                }
    
    


    io credo che il problema sia nel

    StoreName.My,
    StoreLocation.CurrentUser
    

    Qualche consiglio

     

     

Tutte le risposte

  • mercoledì 11 gennaio 2012 15:16
     
      Contiene codice

    mi sono probabilmente imbattuto nella soluzione... stasera la provo

    il codice di partenza è

      const string certName = "AzureManagement.pfx";
                    const string password = "Pa$$w0rd";
    
                    // load certificate
                    var manifestResourceStream = typeof(ProjectContext).Assembly.GetManifestResourceStream(certName);
                    if (manifestResourceStream == null)
                    {
                        // should we panic?
                        return true;
                    }
    
                    var bytes = new byte[manifestResourceStream.Length];
                    manifestResourceStream.Read(bytes, 0, bytes.Length);
    
                    var cert = new X509Certificate2(bytes, password);
    
                    var serviceManagementChannel = Microsoft.Toolkit.WindowsAzure.ServiceManagement.ServiceManagementHelper.
                        CreateServiceManagementChannel("WindowsAzureServiceManagement", cert);
    
                    using (new OperationContextScope((IContextChannel)serviceManagementChannel))
                    {
    


  • giovedì 12 gennaio 2012 08:27
     
     Con risposta Contiene codice

    si il codice di riferimento è all'incirca quello precedente. io ho usato questo per il mio WCF che permette di lanciare o eliminare deploy

    const string certName = "xxxx.xxxx.pfx";
                    const string password = "xxxxx";
    
                    // load certificate
                    var manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(certName);
                    if (manifestResourceStream == null)
                    {
                        throw new DataServiceException(500,"Server Error", "no certificato","en-EN",null);
                        return;
                    }
    
                    var bytes = new byte[manifestResourceStream.Length];
                    manifestResourceStream.Read(bytes, 0, bytes.Length);
    

    il certificato deve essere incluso nel progetto come embeded resource

  • giovedì 19 gennaio 2012 14:06
    Proprietario
     
     

    Ciao Chida Nirio,

    Vorrei ringraziarti per aver condiviso con la community il codice che hai usato nel tuo scenario. Sarà davvero utile per altri utenti con lo stesso problema.

    Buono sviluppo!


    Irina Turcu

    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.

    LinkedIn