Einzelnen Beitrag anzeigen

Schrammel

Registriert seit: 21. Jan 2006
Ort: Koblenz
29 Beiträge
 
Delphi 2006 Architect
 
#1

Remoting eines ECO PerstistenceMapperProviders über den IIS

  Alt 30. Okt 2006, 10:49
Hallo zusammen,

ich habe ein Problem beim Remoting eines ECO PersistenceMapperProviers über den Internet Information Server.

Folgendes passiert:

Ich habe von PersistenceMapperProvider einen RezepteProvider abgeleitet, habe ihm einen ECOSpace-Typ RezepteEcoSpace zugeorndet. diesen ECOSpace lasse ich ein ECO-Package aus einer DLL (RezeptePackage) nutzen.

Das ganze habe ich in eine winforms-Anwendung gepackt, das Remoting aktiviert und: es lief.

Danach habe ich den PersistenceMapper und den EcoSpace in eine DLL ausgelagert, nenne diese RezepteServer.dll und habe dabei folgendes Problem herausgefunden:

Ich weiß nicht mehr, wann ich den EcoSpace erstellen soll. Ich habe dies mal in den Konstruktor des PerstistenceMapperProvider verschoben.

Compilieren - klappt

Nun habe ich beide DLL (RezepteServer und RezeptePackage) nach wwwroot\RezeptServer\bin kopiert.

In der IIS-Steuerkonsole habe ich eine neue Web-Application angelegt, die Nutzungsrechte für den ASP-Nutzer vergeben und in wwwroot folgende web.config angelegt:
XML-Code:
<system.runtime.remoting>
<application>
    <service>
        <wellknown
   mode="SingleCall"
   type="RezepteSpace.RezepteProvider,
RezeptServer"
   objectUri="RezeptProvider.soap" />
 </service>
 <channels>
  <channel
   name="TheChannel"
   priority="100"
   ref="http"
     />
 </channels>
 </application>
</system.runtime.remoting>
Wenn ich nun im IE eingebe:

http://localhost/RezeptServer/RezeptProvider.soap?wsdl

so erwarte, ich dass ich eine Ellenlange xml-Datei angezeigt bekomme. Stattdessen erhalte ich:


System.NullReferenceException: Object reference not set to an instance of an
object.
at
System.Runtime.Remoting.MetadataServices.RealSchem aType.Resolve(StringBuild*er
sb)
at System.Runtime.Remoting.MetadataServices.XMLNamesp ace.Resolve()
at System.Runtime.Remoting.MetadataServices.WsdlGener ator.Resolve()
at System.Runtime.Remoting.MetadataServices.WsdlGener ator.Generate()
at System.Runtime.Remoting.MetadataServices.SUDSGener ator.Generate()
at
System.Runtime.Remoting.MetadataServices.SdlChanne lSink.GenerateSdl(SdlType
sdlType, IServerResponseChannelSinkStack sinkStack, ITransportHeaders
requestHeaders, ITransportHeaders responseHeaders, Stream& outputStream)
at
System.Runtime.Remoting.MetadataServices.SdlChanne lSink.ProcessMessage(ISer*verChannelSinkStack
sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream
requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders,
Stream& responseStream)
at
System.Runtime.Remoting.Channels.Http.HttpHandlerT ransportSink.HandleReques*t(HttpContext
context)
at
System.Runtime.Remoting.Channels.Http.HttpRemoting Handler.InternalProcessRe*quest(HttpContext
context)

Was soviel heißt, wie: Das aufgerufene Objekt kann nicht erstellt werden.

Ich vermute, dass diese daran liegt, dass ich den EcoSpace nicht rechtzeitig geöffnet bekomme. Hat jeamd eine Idee, wie ich den EcoSpace beretis beim Laden der Dll, vor der Erstellung des ersten RepzepteProviders erstellen kann?

Herzlichen Dank für Eure Bemühungen

Stefan Schramm
  Mit Zitat antworten Zitat