Sloenig Geschrieben 25. Juli 2013 Geschrieben 25. Juli 2013 Hallo zusammen, ich versuche mich grad zum ersten mal an einem WCF-Service unter C#. Hab mir auch ein Tutorial im Netz gesucht, von dem ich dachte, dass es recht verständlich ist. Nun habe ich mehrere Projekte in meiner Solution, einmal das Service-Projekt und einmal das Projekt für einen Service Host. Wenn ich mir den Service Host im Browser anzeigen lassen, also die svc-datei, dann kommt immer eine Fehlermeldung, dass die Metadaten nicht veröffentlicht sind. Wenn ich die beschreibung befolge, wie ich sie veröffentliche, ändert sich nichts an der Fehlermeldung. Die Konfiguratiosndatei sieht folgendermaßen aus: <configuration> <system.serviceModel> <services> <!-- Hinweis: Der Dienstname muss dem Konfigurationsnamen für die Dienstimplementierung entsprechen. --> <service name="MVA_Service.InternalService" behaviorConfiguration="MyServiceTypeBehaviors" > <!-- Fügen Sie folgenden Endpunkt hinzu. --> <!-- Hinweis: Der Dienst muss über eine HTTP-Basisadresse verfügen, um diesen Endpunkt hinzuzufügen. --> <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="MyServiceTypeBehaviors" > <!-- Fügen Sie der Dienstverhaltenskonfiguration folgendes Element hinzu. --> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration> Ich hoffe jemand kann mir helfen! Danke schonmal
lbm1305 Geschrieben 25. Juli 2013 Geschrieben 25. Juli 2013 Moin, ich sehe keinen Endpunkt für den eigentlichen Dienst ?! Unter Service müssten mindestens 2 Endpoints auftauchen. 1.) Der Endpoint für den Dienst. 2.) Der Endpoint für die Metadaten
Sloenig Geschrieben 25. Juli 2013 Autor Geschrieben 25. Juli 2013 Also ich hab das jetzt folgendermaßen geändert, leider immernoch der gleiche Fehler bzw. die gleiche Meldung: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="MVA_Services.InternalService" behaviorConfiguration="SimpleServiceBehavior"> <endpoint address="MVA_Objects" binding="basicHttpBinding" contract="MVA_Objects.IInternalInterface" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="SimpleServiceBehavior"> <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" policyVersion="Policy12" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration> Wie man sieht, ist die eigentliche Implementierung des Interfaces und das Interface selbst in einem Unterschiedlichen Namespace. Die Webanwendung läuft ebenfalls in einem eigenen Namespace. Die SVC-Datei hat folgenden Inhalt: <%@ ServiceHost Language="C#" Debug="true" Service="MVA_Services.InternalService" %> Ich hab echt kein plan was man da anders machen soll, hab schon mehrfach im Internet gesucht.
lbm1305 Geschrieben 25. Juli 2013 Geschrieben 25. Juli 2013 Code funktioniert bei mir so. [ServiceContract] public interface IDemoService { [OperationContract] string GetMessage(); } public class DemoService : IDemoService { public string GetMessage() { return "Hallo Welt"; } } <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="DemoServiceBehavior"> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" policyVersion="Policy12"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <services> <service name="WcfServiceDemo.DemoService" behaviorConfiguration="DemoServiceBehavior"> <endpoint address="" binding="basicHttpBinding" contract="WcfServiceDemo.Contracts.IDemoService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> Die Projektstruktur
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden