Как создать сервис WCF с Mono? - PullRequest
3 голосов
/ 18 июля 2010

У меня WCF работает на Windows. Я хотел бы развернуть его - или хотя бы протестировать - на сервере разработки под управлением SUSE и Mono.

После того, как я спросил о примерах WCF в Mono на канале IRC #monodev в GimpNet, я скачал примеры из оливкового модуля в Subversion.

Ни один из примеров не использует файл Web.config для создания служебной шины, вместо этого наследуется от ServiceHost и создает привязку и т. Д. Вручную. Теперь я хочу знать, использует ли Mono файлы Web.config или я должен создавать привязки и тому подобное вручную ?

Прямо сейчас, запуск моего сервиса на MonoDevelop и нажатие только http://localhost:8080/ (или http://localhost:8080/ServiceName.svc - кажется, не имеет значения) выдает ошибку, которую я не могу определить:

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

Какие-нибудь советы, что мне делать?

Ответы [ 2 ]

2 голосов
/ 18 июля 2010

В феврале / марте этого года была проведена некоторая работа по поддержке WCF в Mono в Mono, если судить по трафику mono-dev , но он еще не был доставлен. Вы можете поэкспериментировать с сборкой версии моно самостоятельно (устаревшее руководство, Mono переключился на git несколько дней назад) или просто создать ставку вручную. Последнее, конечно, легче сделать.

1 голос
/ 18 июля 2010

Исходя из отчета об исключении, похоже, что платформа Mono выбирает отрицательное число (-1?) В качестве значения по умолчанию для значений, которые должны по умолчанию принимать различные положительные числа. Я бы посмотрел полную конфигурацию конечной точки на MSDN, выяснил правильные значения по умолчанию для таких вещей, как квоты считывателя, и установил их вручную. Если это решит проблему, я отправлю отчет об ошибке в команду Mono, так как кажется, что у них есть ошибка в трассировке стека где-то вдоль линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...