3 Stimmen

Wie erstellt man einen WCF-Dienst mit Mono?

Ich habe ein WCF, das unter Windows läuft. Ich möchte es bereitstellen - oder zumindest testen - auf einem Entwicklungsserver unter SUSE und Mono.

Nachdem ich im IRC-Kanal #monodev im GimpNet nach WCF-Beispielen in Mono gefragt habe, habe ich die Beispiele aus dem olive-Modul in der Subversion heruntergeladen.

Keine Beispiele tatsächlich verwendet eine Web.config-Datei, um den Service-Bus stattdessen erben von ServiceHost und erstellen Bindung, so weiter, manuell zu erstellen. Jetzt möchte ich wissen, verwendet Mono Web.config-Dateien oder sollte ich Bindungen und solche von Hand erstellen ?

Im Moment läuft mein Dienst auf MonoDevelop und drückt nur http://localhost:8080/ (oder http://localhost:8080/ServiceName.svc - scheint keine Rolle zu spielen) gibt mir einen Fehler, den ich nicht identifizieren kann:

Server Error in '/' Application

Value must be positive integer.

Description: HTTP 500. Error processing request.

Stack Trace:

System.ArgumentException: Value must be positive integer.
  at System.Xml.XmlDictionaryReaderQuotas.Check (Int32 value) [0x0002a] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderQuotas.cs:94 
  at System.Xml.XmlDictionaryReaderQuotas.set_MaxBytesPerRead (Int32 value) [0x00000] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.Runtime.Serialization/System.Xml/XmlDictionaryReaderQuotas.cs:69 
  at System.ServiceModel.Configuration.BasicHttpBindingElement.OnApplyConfiguration (System.ServiceModel.Channels.Binding binding) [0x00043] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/BasicHttpBindingElement.cs:214 
  at System.ServiceModel.Configuration.StandardBindingElement.ApplyConfiguration (System.ServiceModel.Channels.Binding binding) [0x00030] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/StandardBindingElement.cs:139 
  at System.ServiceModel.Configuration.ConfigUtil.CreateBinding (System.String binding, System.String bindingConfiguration) [0x00063] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel.Configuration/ConfigUtil.cs:81 
  at System.ServiceModel.ServiceHostBase.ApplyConfiguration () [0x00110] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostBase.cs:320 
  at System.ServiceModel.ServiceHostBase.InitializeDescription (System.ServiceModel.UriSchemeKeyedCollection baseAddresses) [0x0001c] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostBase.cs:368 
  at System.ServiceModel.ServiceHost.InitializeDescription (System.Type serviceType, System.ServiceModel.UriSchemeKeyedCollection baseAddresses) [0x0001d] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs:160 
  at System.ServiceModel.ServiceHost..ctor (System.Type serviceType, System.Uri[] baseAddresses) [0x00006] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs:60 
  at System.ServiceModel.Channels.SvcHttpHandler.EnsureServiceHost () [0x0007d] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SvcHttpHandler.cs:207 
  at System.ServiceModel.Channels.SvcHttpHandler.ProcessRequest (System.Web.HttpContext context) [0x00000] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.ServiceModel/System.ServiceModel.Channels/SvcHttpHandler.cs:150 
  at System.Web.HttpApplication+<Pipeline>c__Iterator2.MoveNext () [0x00cdf] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.Web/System.Web/HttpApplication.cs:1362 
  at System.Web.HttpApplication.Tick () [0x00000] in /usr/src/packages/BUILD/mono-2.6.4/mcs/class/System.Web/System.Web/HttpApplication.cs:928 
Version information: Mono Runtime Version: 2.6.4 (tarball Mon Jul 5 13:53:45 UTC 2010); ASP.NET Version: 2.0.50727.1433

Gibt es Tipps, was ich tun sollte?

2voto

skolima Punkte 30692

Es gab einige Arbeiten am Web.config-Support für WCF in Mono im Februar/März dieses Jahres, wie aus dem Verkehr der Mono-Dev-Mailingliste hervorgeht, aber dies wurde noch nicht versandt. Sie können mit dem Bau einer Entwicklerversion von Mono selbst experimentieren (veralteter Leitfaden, Mono ist vor einigen Tagen zu git gewechselt) oder nur die Bindung manuell erstellen. Letzteres ist sicherlich einfacher zu tun.

1voto

jrista Punkte 31522

Basierend auf dem Ausnahmefehlerbericht scheint es, als würde das Mono-Framework eine negative Zahl (-1?) als Standardwert für Werte auswählen, die standardmäßig verschiedene positive Zahlen sein sollten. Ich würde die vollständige Konfiguration für einen Endpunkt auf MSDN nachschlagen, die richtigen Standardwerte für Dinge wie Lesequoten herausfinden und diese manuell festlegen. Wenn dies das Problem löst, würde ich einen Fehlerbericht an das Mono-Team senden, da anscheinend irgendwo in diesem Stapelrückverfolgung ein Fehler vorliegt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X