开发者

How to create a WCF service with Mono?

I have a WCF running on Windows. I'd like to deploy it - or at least test it - on a development server running SUSE and Mono.

After asking about WCF examples in Mono on the IRC channel #monodev at GimpNet I've download the examples from the olive module in the subversion.

No examples actually uses a Web.config file to create the service bus instead inherit from ServiceHost and create binding, so on, manually. Now I want to know, does Mono uses Web.config files or should I create bindings and such by hand?

Right now, running my service on MonoDevelop and hitting just http://localhost:8080/ (or http://localhost:8080/ServiceName.svc - doesn't seem to matter) gives me an error I can't identify:

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/Syst开发者_高级运维em.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

Any tips on what should I do?


There has been some work on web.config support for WCF in Mono in February/March this year, judging from the mono-dev mailing list traffic, but this has not been shipped yet. You may experiment with building a development version of mono yourself (outdated guide, Mono switched to git a few days ago), or just create the biding manually. The later is certainly easier to do.


Based on the exception report, it sounds like the Mono framework is picking a negative number (-1?) as the default for values that should default to various positive numbers. I would look up the full configuration for an endpoint on MSDN, figure out the proper default values for things like Reader Quotas, and set them manually. If this resolves the problem, I would file a bug report with the Mono team, as it would seem they have a bug in that stack trace somewhere along the line.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜