2017-06-19 2 views
1

Ich habe eine Mastercard SDK zu meinem asp.net Core API hinzugefügt. Der Aufruf von api funktioniert auf meinem lokalen Rechner einwandfrei. Aber wenn es auf Azure bereitgestellt wird, wird der obige Fehler ausgegeben.Die angegebene CGI-Anwendung hat einen Fehler festgestellt und der Server hat den Prozess beendet. Azure

Ich habe alles versucht.

Ich habe einen Debugger an die Live-Site angeschlossen. Es wirft Fehler, wenn ich SetAuthentication

public MatchType RequestCall(string consumerKey, string keyAlias, string keyPassword) 
    { 
     byte[] certificateBytes = GetCertificateStream(); 
     ApiConfig.SetAuthentication(new OAuthAuthentication(consumerKey, certificateBytes, keyAlias, keyPassword)); 
     ApiConfig.SetSandbox(true); 

     RequestMap map = GenerateRequestMap(); 
     TerminationInquiryRequest response = TerminationInquiryRequest.Create(map); 
     return GetMatchType(response); 

    } 



public byte[] GetCertificateStream() 
     { 
      var resourceName = typeof(TerminationMatchInquiry).GetTypeInfo().Assembly.GetManifestResourceNames()[0];//Get certificate resource name 
      using (Stream CertStream = typeof(TerminationMatchInquiry).GetTypeInfo().Assembly.GetManifestResourceStream(resourceName)) 
      { 
       byte[] RawBytes = new byte[CertStream.Length]; 
       for (int Index = 0; Index < CertStream.Length; Index++) 
       { 
        RawBytes[Index] = (byte)CertStream.ReadByte(); 
       } 
       return RawBytes.ToArray(); 
      } 
     } 
+0

Haben Sie Ihre Fehlermeldung googlen? Es gibt einige vielversprechende Ergebnisse. – Crowcoder

+0

Oh ja. Aber immer noch kein Glück – maxspan

+1

Ich bin überrascht, dass sogar kompiliert. Ich kann keine Überladung von 'OAuthAuthentication' finden, die ein Byte-Array im zweiten Argument übernimmt. Haben Sie versucht, den Pfad zu Ihrer .p12-Datei zu verwenden, anstatt ihn aus Ressourcen zu lesen? – Crowcoder

Antwort

1

Nach Überprüfung der Quelle der MasterCard SDK für C# nennen, fand ich, dass, wird es eine Instanz von X509Certificate2 schaffen, wenn wir OAuthAuthentication aufrufen. Der Fehler wird in dieser Zeile verursacht.

cert = new X509Certificate2(rawCertificateData, password, keyStoreFlags | X509KeyStorageFlags.Exportable); 

Im Azure WebApp, wenn wir versuchen, das Zertifikat zu verwenden, müssen wir das Zertifikat von dem Azure-Portal hochladen. Fügen Sie den WEBSITE_LOAD_CERTIFICATES mit dem Fingerabdruckwert in der Azure WebApp-Anwendung hinzu. Weitere Informationen finden Sie unter blog.

Verwandte Themen