У меня есть служба WCF, использующая basicHttpBinding, размещенную в Apache 2.2.15, с использованием mod_mono в CentOS. Я добавил следующие директивы в конец /etc/httpd/conf/httpd.conf, чтобы включить службы WCF:
MonoServerPath default /usr/bin/mod-mono-server4
AddType application/x-asp-net .svc
Когда я пытаюсь вызвать операцию в службе с клиента в Windows:
BasicHttpBinding binding = new BasicHttpBinding();
IService1 service1 = ChannelFactory<IService1>.CreateChannel(binding, new EndpointAddress(new Uri(`"http://ipaddress/svctest/Service1.svc"`)));
string test= service1.GetData(1);
Выдается следующее исключение:
ProtocolException не было обработано: тип содержимого application/x-asp-net ответного сообщения не соответствует типу содержимого привязки (text/xml; charset=utf-8). При использовании пользовательского кодировщика убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 109 байт ответа были: '‹%@ ServiceHost Language="C#" Debug="true" Service="svcfiletest.Service1" CodeBehind="Service1.svc.cs"% >
Когда я обращаюсь к сервису через браузер, он загружает файл вместо отображения описания сервиса.
Когда я использую
svcutil
http://ipaddress/svcutil/Service1.svc?wsdl, я получаю следующее сообщение:Документ по URL-адресу
http://ipaddress/svctest/Service1.svc
не был распознан как документ известного типа. Сообщение об ошибке каждого известного типа может помочь вам решить проблему: -Отчет из «Схемы XML»: «Имя не может начинаться с символа «%», шестнадцатеричное значение 0x25. Строка 1, позиция 2.'. -Отчет из «Документа WSDL»: «Ошибка в XML-документе (1,2)». -Имя не может начинаться с символа '%', шестнадцатеричное значение 0x25. Линия 1, позиция 2.
Кажется, он получает текст из Service1.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="svcfiletest.Service1" CodeBehind="Service1.svc.cs" %>
Любая помощь?
Спасибо