Я пытаюсь разместить службу WCF в CentOS с использованием mono 2.10.8 и получить доступ к нему как к серверу REST или SOAP.
Я запустил приложение, используя mod-mono-server-4, в папке, содержащей мой файл web.config:
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="WebBehavior" name="Services.Hello">
<clear/>
<endpoint address="http://DOMAIN/service" behaviorConfiguration="HelloBehavior" binding="webHttpBinding" contract="Services.IHello" />
<endpoint address="http://DOMAIN/web" binding="basicHttpBinding" bindingConfiguration="" contract="Services.IHello" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="HelloBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WebBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Если я сейчас позвоню DOMAIN/web?wsdl
или DOMAIN/service/hello
(/hello
- это UriTemplate WebGetAttribute метода в IHello), я получу только 404:
Ошибка сервера в «/» приложении
Ресурс не найден.
У меня также есть Service.svc
файл, содержащий:
Если я позвоню DOMAIN/Service.svc/hello
, я получу ошибку SOAP:
Сообщение с запросом имеет цель 'http://DOMAIN/Service.svc/hello' с действием' ', которая недоступна в этом контракте на обслуживание
Если я запускаю консольное приложение на сервере, выполняя следующее:
WebServiceHost sh = new WebServiceHost(typeof(Hello), new Uri("http://localhost:681/service"));
sh.Open();
Я могу получить доступ к службе через порт 680, так что mono должен иметь возможность запускать службу, но мне нужно, чтобы она работала с mod_mono (на порту 80).
Что мне нужно настроить по-другому?
В конце я пытаюсь разместить SyndicationFeed для доставки RSS / Atom-Feeds.