fragen stichworte

Fehler beim Bereitstellen eines Web-Service für iis 7.5

Ich wurde von der Programmierabteilung gebeten, die Bereitstellung einer ihrer Apps zu testen. Alles, was ich über die App weiß, ist, dass es sich um einen Webservice-WSC-Code c # für eine Wpf-App handelt. Sie sagten mir, dass sie versucht haben, das Zertifikat direkt in den Webservice zu stellen (um zu vermeiden, dass der Ärger das SSL-Zertifikat registrieren und in jeder Client-App speichern kann).

Bisher kein Problem mit mir. Aber da der kleine Trick.

Ich habe versucht, das Ding in localhost bereitzustellen (um sicherzugehen, wie der Vorgang ausgeführt wird), und alles ist gut (habe die svc-Ladeseite mit dieser Nachricht erhalten):

blabla Erfolg

svcutil.exe http://###deployment.eslan2.local/Service###.svc?wsdl

C #

class Test
{
    static void Main()
    {
      //how to blabla
       client.Close();
    }
}

aber wenn ich versuche, den Webservice auf meinem IIS-Webserver (ws2K8R2 mit IIS7.5) bereitzustellen, erhalte ich diese unangenehme und nicht wirklich hilfreiche Fehlermeldung:

Server Error in '/' Application.
The specified network password is not correct.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Security.Cryptography.CryptographicException: The specified network password is not correct.

Quellfehler:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[CryptographicException: The specified network password is not correct.]
   System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) +41
   System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx) +0
   System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags) +335
   System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData) +101
   Effect.ServiceModel.ServiceBehaviorHandlerAttribute.ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) +623

[ServiceModelException: An error occurs during service management.]
   Effect.ServiceModel.ServiceBehaviorHandlerAttribute.ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) +1782
   System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) +3565
   System.ServiceModel.ServiceHostBase.InitializeRuntime() +82
   System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +64
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789
   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +287
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +1132

Ich habe 3 Tage lang im Netz gesucht, um eine Antwort zu finden, aber bisher nichts wertvolles.

Ich habe gedacht, es ist nicht von meinem Server, aber der Code, aus dem der Fehler stammt.

antworten

Es ist tatsächlich eine ziemlich hilfreiche Fehlermeldung.

Im Wesentlichen startet die Anwendung nicht, weil ein "Passwort" nicht korrekt ist. Das Passwort ist jedoch der verwirrende Teil, da dies höchstwahrscheinlich ein Fingerabdruck des Zertifikats und kein echtes Passwort ist. Der erste Stack-Trace verweist auf den .NET-Crypto-Provider, der versucht, ein X509-Zertifikat zu lesen.

Offenbar ist Ihr Web-Service so konfiguriert, dass er Zertifikate für die Authentifizierung verwendet. Möglicherweise zwischen dem Server und dem Client, von dem ich mir nicht sicher sein kann. Unabhängig davon, wie es aussieht, müssen Sie einen Blick darauf werfen, ob tatsächlich ein Zertifikat in Ihrer Entwicklungsumgebung verwendet wird. Es ist möglich, dass dieses Zertifikat in Ihrer Produktionsbox nicht vertrauenswürdig ist oder nicht ordnungsgemäß geladen wird.

Dort würde ich anfangen und von dort gehen. Es ist schwer zu wissen, was Sie gerade tun oder was Ihr Code macht. Alles in allem sieht es jedoch so aus, als würde es sich um ein Problem bei der Einrichtung einer Anwendung handeln. Wenn es kein Zertifikat ist, können Sie einen Moderator bitten, die Frage zu StackOverflow zu migrieren, wo Sie genauere WCF-Unterstützung erhalten.