"Konfigurieren der Dienste mit Endpunkten" Demo fällt Für Mich (Microsoft/Endpunkt.tv/Pluralsight)
Ich versuche zu Folgen zusammen mit dem demo-videos auf, die Anfänger zu WCF-Seite auf MSDN.
Das erste video war mehr oder weniger gut. Ich bin jetzt gegen Ende des zweiten Videos. Ich bin mit VS2010 /.NET 4.0, in der Erwägung, dass das video scheint zu sein, die mit VS2008 (ich nehme .NET 3.5, aber ich kann mich nicht erinnern).
Ich bin mit der folgenden demo
Haben wir gerade Hinzugefügt 3 weitere Endpunkte: eine plain-http, net.tcp, net.Rohr. Wenn ich versuche, führen Sie das Projekt nun den Web-Dienst nicht gestartet werden.
System.InvalidOperationException: Cannot load the X.509 certificate identity specified in the configuration.
at System.ServiceModel.Description.ConfigLoader.LoadIdentity(IdentityElement element)
at System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress)
at System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader, ServiceDescription description, ServiceElement serviceSection)
at System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader, ServiceDescription description, String configurationName)
at System.ServiceModel.ServiceHostBase.ApplyConfiguration()
at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
at System.ServiceModel.ServiceHost.InitializeDescription(Type serviceType, UriSchemeKeyedCollection baseAddresses)
at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
at Microsoft.Tools.SvcHost.ServiceHostHelper.CreateServiceHost(Type type, ServiceKind kind)
at Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo info)
Basierend auf mein Google-fu, stieß ich auf diesen thread: "Kann nicht geladen werden X. 509-Zertifikat Identität in der Konfiguration angegebenen"
Ich wirklich nicht wollen, sich zu engagieren in Zertifikate nur noch, da ich immer noch Experimentieren mit den Grundlagen, also folgte ich dem Rat in diesem Beitrag und soeben das <dns value="localhost" />
tag. Die Ausnahme ändert:
Please try changing the HTTP port to 8732 or running as Administrator.
System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:8080/EvalService/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details). ---> System.Net.HttpListenerException: Access is denied
at System.Net.HttpListener.AddAllPrefixes()
at System.Net.HttpListener.Start()
at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen()
--- End of inner exception stack trace ---
at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen()
at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)
at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)
at System.ServiceModel.Channels.TransportChannelListener.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.HttpChannelListener.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.DatagramChannelDemuxer`2.OnOuterListenerOpen(ChannelDemuxerFilter filter, IChannelListener listener, TimeSpan timeout)
at System.ServiceModel.Channels.SingletonChannelListener`3.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Security.NegotiationTokenAuthenticator`1.OnOpen(TimeSpan timeout)
at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Security.CommunicationObjectSecurityTokenAuthenticator.Open(TimeSpan timeout)
at System.ServiceModel.Security.SecurityUtils.OpenCommunicationObject(ICommunicationObject obj, TimeSpan timeout)
at System.ServiceModel.Security.SecurityUtils.OpenTokenAuthenticatorIfRequired(SecurityTokenAuthenticator tokenAuthenticator, TimeSpan timeout)
at System.ServiceModel.Security.SecurityProtocolFactory.Open(String propertyName, Boolean requiredForForwardDirection, SecurityTokenAuthenticator authenticator, TimeSpan timeout)
at System.ServiceModel.Security.SymmetricSecurityProtocolFactory.OnOpen(TimeSpan timeout)
at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Security.SecurityProtocolFactory.Open(Boolean actAsInitiator, TimeSpan timeout)
at System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(TimeSpan timeout)
at System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionSecurityTokenAuthenticator.OnOpen(TimeSpan timeout)
at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Security.CommunicationObjectSecurityTokenAuthenticator.Open(TimeSpan timeout)
at System.ServiceModel.Security.SecurityUtils.OpenCommunicationObject(ICommunicationObject obj, TimeSpan timeout)
at System.ServiceModel.Security.SecurityUtils.OpenTokenAuthenticatorIfRequired(SecurityTokenAuthenticator tokenAuthenticator, TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionServerSettings.OnOpen(TimeSpan timeout)
at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionServerSettings.Open(TimeSpan timeout)
at System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(TimeSpan timeout)
at System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open()
at Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo info)
System.Net.HttpListenerException (0x80004005): Access is denied
at System.Net.HttpListener.AddAllPrefixes()
at System.Net.HttpListener.Start()
at System.ServiceModel.Channels.SharedHttpTransportManager.OnOpen()
So, ich habe versucht zu tun, was Sie gesagt hat: der port geändert werden, 8732, aber die Ausnahme ist, noch geworfen, dieses mal sagen Please try changing the HTTP port to 8732...HTTP could not register URL http://+:8732/EvalService/...
. 😛
Habe ich versucht, das auskommentieren der neue Endpunkt ohne Erfolg. Sogar die Originale mit diesem Fehler fehlschlagen. Egal, entweder, wenn ich Sie wieder in den ursprünglichen port [nicht so] 1337.
Hier ist die App.config, und nichts steht heraus als problematisch:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service name="EvalServiceLibrary.EvalService">
<clear />
<endpoint address="ws" binding="wsHttpBinding" contract="EvalServiceLibrary.IEvalService"
listenUriMode="Explicit">
<identity>
<dns value="localhost" />
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"
listenUriMode="Explicit">
<identity>
<dns value="localhost" />
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
</identity>
</endpoint>
<endpoint address="basic" binding="basicHttpBinding" contract="EvalServiceLibrary.IEvalService"
listenUriMode="Explicit">
<identity>
<dns value="localhost" />
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
</identity>
</endpoint>
<endpoint address="net.tcp://localhost:8888/EvalService" binding="netTcpBinding"
contract="EvalServiceLibrary.IEvalService" listenUriMode="Explicit">
<identity>
<dns value="localhost" />
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
</identity>
</endpoint>
<endpoint address="net.pipe://localhost/EvalService" binding="netNamedPipeBinding"
bindingConfiguration="" contract="EvalServiceLibrary.IEvalService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/EvalService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Was falsch ist /wie kann ich es beheben?
InformationsquelleAutor bambams | 2011-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auch ich folgte dem gleichen webcast und hatte die gleichen Probleme. Ich hab um die cert Frage kommentieren die Einträge aus, wie vorgeschlagen, die von anderen.
Korrigierte ich das "Bitte versuchen Sie, durch verändern der HTTP-port 8732 oder das ausführen als Administrator" durch die Angabe "Design_Time_Addresses" zurück in meine url
Nicht Funktioniert
Funktioniert!
InformationsquelleAutor nasp.tech
Eine scheinbar funktionierende Lösung für die letztere der beiden Probleme oben (
HTTP could not register URL
) finden Sie in der VS2010 Training Kit posted in die Kommentare Gabobcat Antwort (von ihm).In der 4. übung, "Ex4-ServiceDiscovery", Sie sind angesichts dessen, was erscheint, um eine chat-Anwendung, die verwendet WCF-Dienste für die Kommunikation zwischen zwei clients. Es verwendet eine entdecken-Funktion zum finden von peers im Netzwerk. Lange Geschichte kurz, die gleiche Ausnahme tritt auf, wenn Sie zunächst versuchen, den ausgefüllten Antrag (nach dem ausfüllen der Entdeckung Ereignisse, wie dies in der übung). Gebündelt mit dem Training Kit ist ein paar batch-Skripte (die AFAICT nutzt Microsoft die "open source" - Lizenz, so dass ich der Lage sein sollten, teilen Sie diese Skripts) zu setzen oder zu löschen "URL ACLs". In der Praxis erscheinen Sie nur einen einzigen (sinnvollen) Befehl:
Datei: AddURLACL.cmd
Datei: DelURLACL.cmd
Offensichtlich, die
netsh
Befehle sind die einzigen, die Materie. Das Beispiel-Projekt hat Sie den folgenden Befehl verwenden (von einem "als Administrator Ausführen" Command-Prompt-Fenster), "reparieren" diese Ausnahme:(Ich habe den absoluten Pfad nur um Ihnen zu zeigen, wo im Training Kit, die Sie finden konnte, diese Skripte; ich persönlich war in der WhatsNewInWCF4\Source Verzeichnis, wenn ich das Tat)
Den string 8000 tritt nur 1 mal im Verlauf dieses Projektes:
Scheint es, dass port 8000 ist der port, den die chat-clients versuchen, zu starten, einen service-host auf (fragt mich nicht wie Sie alle teilen...ich gehe davon aus, dass die
ServiceHost
Klasse, Sie ist intelligent genug, um ein vorhandenes service...).Habe ich noch nicht experimentiert gründlich mit diesem noch nicht, aber es scheint "fest" meine EvalService Projekt (wenn ich änderte den port 8000). Das ist derzeit mit den meisten Endpunkten entfernt (nur die
basicHttpBinding
Endpunkt Links) und diebaseAddress
eingestelltlocalhost:8000
.Lassen Sie mich wissen, wenn diese arbeiten auch für Sie.
InformationsquelleAutor bambams
War ich frustated mit dem gleichen Problem. Endlich habe ich die Lösung gefunden, indem ich mich durch ausführen der Visual Studio als Administrator durch Rechtsklick auf Visual Studio 2010 und der Auswahl "Als Administrator Ausführen".
InformationsquelleAutor Sudipto Kumar Mukherjee
Ist das problem in Ihrer Konfiguration. Sie verweisen auf die Zertifikate in Ihrem Endpunkte. Entweder Sie entfernen diese:
Oder Sie stellen einige Zertifikate in Ihrem Zertifikatspeicher. Ich empfehle das entfernen der "Identität" konfigurationsbereiche an dieser Stelle, bis Sie lernen ein bisschen mehr über WCF. Versuchen Sie, bleiben Sie einfach auf basic-endpoint-Konfiguration für den Anfang, und arbeiten Sie Ihren Weg von dem Punkt, in dem Sie verstehen die Grundlagen von WCF. WCF bietet Ihnen eine große (wirklich große) Menge von Konfigurations-Optionen, je nach Ihren spezifischen Bedürfnissen.
Vielleicht diese links helfen, Sie gehen in WCF besser, dass die videos, die Sie beobachtet haben:
Beginner ' s Guide to Windows Communication Foundation
Was Ist Die Windows Communication Foundation
Hoffe, das hilft.
<identity>
- tags entledigt sich der X. 509 certificate error(s), aber ich bin immer noch mit der binding error(s). Ich denke, die<identity>
Abschnitte wurden auch automatisch Hinzugefügt werden, indem Visual Studio (ohne spezielle Aktion von mir), so scheint es unintuitiv zu haben, um loszuwerden von Ihnen in diesem demo.Wie viele Enpoint/Bindungen haben Sie? Mit einem Start-Endpunkt mit einem "basicHttpBinding". Entfernen Sie die anderen Endpunkte und die Bindungen, die Sie verweisen. Sind Sie mit der VS-Entwicklung, server oder einem anderen web-server? Wenn ja, lass VS Kontrolle der port-Nummern. Wenn Sie mit anderen web-server, stick an den port 80 für den Willen eures demos. Wenn Sie brauchen, um zu posten Sie neue Ausnahmen, die Sie bekommen.
Der erste link oben gepostet ist der erste link im OP. 😉 Das ist, wo ich fand das video. 😛
Wenn ich kommentieren Sie alle anderen Endpunkte (einschließlich mex) und lassen Sie nur die
<basicHttpBinding>
(mit der<identity>
auskommentiert), dann ändern Sie die<baseAddress>
zuhttp://localhost/EvalService
bekomme ich noch die Letztgenannte Ausnahme von der OP: Zugriff verweigert, nicht die nötigen Rechte, um den namespace, etc...Eine Letzte Sache, die ich nicht buchen konnte, es gestern. Laden Sie die VS2010 TrainingKit. Es hat Schritt für Schritt Anleitung, Begin-und End-code-Beispiele für das tutorial, so können Sie vergleichen Sie Ihre Ergebnisse mit den erwarteten Ergebnissen, und es deckt viele Aspekte von VS2010 und .NET, nicht nur WCF. Nicht frustriert mit dem video-tutorial. Es ist einfach, aber es nutzt einige tools, die sind nicht zu helfen, Sie zu verstehen, WCF, und statt makign Sache zu verschleiern. Es ist nie leicht am Anfang, aber weiter gehen und Sie werden es bekommen. Hoffe, das hilft. Viel Glück.
InformationsquelleAutor Gabe Thorns
Dachte, ich würde hinzufügen eine aktualisierte konsolidierte Antwort von dem, was ich gelesen hatte.
Während wir können alle gehen zu den großen Längen, um zu ermöglichen, Berechtigungen mit dem Zertifikat, die meisten Leute, die dies Lesen, sind wirklich nur wollen, um den WCF-Endpunkte und läuft so schnell wie möglich.
So ein paar Möglichkeiten.
Entweder von diesen scheint der schnellsten Wege, um aufzustehen und läuft mit diesem Thema.
InformationsquelleAutor Tom Stickel
Ausführen als administrator, Rechtsklick Visual Studio, und wählen Sie als Administrator Ausführen aus dem Kontextmenü.
Ausführen als administrator die ganze Zeit, rechts klicken Sie auf Visual Studio, dann gehen Sie auf Eigenschaften im Kontextmenü
Habe auf die Registerkarte Kompatibilität, und wählen Sie dann dieses Programm Ausführen als administrator.
InformationsquelleAutor quoc