Autor Beitrag
MHA
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 17.09.10 11:31 
Hallo!

Ich habe einen ganz einfachen WCF Service erstellt. Dazu eine ConsolenApp als Host -> alles klappt wunderbar!
Nun hab ich einen Windows-Dienst erstellt, der das Hosting des Servic übernehmen soll, bis dahinn ist auch noch alles gut. Der Dienst startet und läuft, nur kann ich nun nicht mehr auf den Service zugreifen!

Hier mal zum besseren Verständnis meine app.config:

ausblenden volle Höhe XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="FMServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/FMServiceMeta" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <ws2007HttpBinding>
        <binding name="wsReliableBinding">
          <reliableSession enabled="true" />
        </binding>
      </ws2007HttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="FMServiceBehavior" name="FMService.FMService">
        <clear />
        <endpoint address="FMService" binding="ws2007HttpBinding" bindingConfiguration="wsReliableBinding"
            name="FMServiceEndpoint" contract="FMService.IFMService" listenUriMode="Explicit" />
        <endpoint address="Mex" binding="mexHttpBinding" name="MexEndpoint"
            contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>


Wenn der Service von der ConsoleApp gehostet wird, gebe ich zum testen im Browser ja nur "http://localhost:8080/" ein und es wird die Informationsseite angezeigt. Lass ich den Service aber durch den Dienst hosten (mit genau der selben app.config), kommt nur der Fehler: "Verbindung fehlgeschlagen....."

Es wäre schön, wenn jemand einen Tip für mich hat!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 17.09.10 12:05 
Zitat:
gebe ich zum testen im Browser ja nur "http://localhost:8080/"


Eigentlich sollte nach deiner Konfiguration der Endpunkt "http://localhost:8080/FMService" sein.
MHA Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 17.09.10 12:47 
Wenn ich im Browser "http://localhost:8080/FMService" angebe, kommt nur eine leere Seite. Bei "http://localhost:8080" kommt die Informationsseite des Service:

FMService Service

You have created a service.

To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax:

svcutil.exe "http://localhost:8080/FMServiceMeta?wsdl"

....


Das Problem ist ja, hoste ich den Service per Selfhosting, ist er erreichbar. Wird er aber mit selbiger Konfiguration per Windows-Dienst gehostet, kann ich ihn nicht mehr erreichen (weder per Client, noch per Browser)!
MHA Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 17.09.10 14:20 
Ich glaube ich hab da was gefunden! Und zwar könnte es an der Http-Konfiguration liegen! Ich hab in der Ereignisanzeige einen Fehler ("....Could not register URL "+:8080/ ....") gefunden, welcher beim Dienststart passiert! Als Lösung hab ich das hier gefunden: blogs.msdn.com/b/ani...-this-namespace.aspx

Da kommt aber das nächste Problem in's Spiel: dieser SDDL-String erschließt sich mir nicht! Wie muss der aussehen, damit der http-Zugriff durch meinen Client auf die Url erlaubt wird???

Also: httpcfg set urlacl /u http://localhost:8080/ -aACL xxxxxxxx
MHA Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 17.09.10 14:40 
Problem gelöst!

Hier blogs.msdn.com/b/pau...r-url-http-8080.aspx gibt es ein kleines Tool samt Quellen, dank dessen man einfach die Berechtigungen setzen kann. Wenn man nun "httpcfg.exe query urlacl" ausführt, kann man sich den generierten SDDL-String auch anssehen!