Я создал службу WCF:
Shared.dll:
[ServiceContract(ConfigurationName = "ICalculator")]
public interface ICalculator
{
[OperationContract()]
int Add(int a, int b);
}
Сервер:
[ServiceBehavior()]
public class Calculator : ICalculator
{
public int Add(int a, int b) { return a + b; }
}
Клиент (попытка № 1):
public class CalculatorClient : ClientBase<ICalculator>, ICalculator
{
private static Binding binding = new WSHttpBinding("MyConfig");
private static EndpointAddress remoteAddress = new EndpointAddress(...);
public CalculatorClient() : base(binding, remoteAddress) { }
public int Add(int a, int b)
{
return Channel.Add(a, b); //Exception
}
}
Клиент (попытка № 2): - Примечание. Я добавил ссылку на службу вместо того, чтобы сам создавать CalculatorClient (.NET создал ее для меня).
static void Main(string[] args)
{
Binding binding = new WSHttpBinding("MyConfig");
EndpointAddress remoteAddress = new EndpointAddress(...);
CalculatorClient client = new CalculatorClient(binding, remoteAddress);
int result = client.Add(5, 4); //Exception
}
Клиент (попытка № 3): - я изменил его на BasicHttpBinding () вместо
static void Main(string[] args)
{
Binding binding = new BasicHttpBinding("MyConfig");
EndpointAddress remoteAddress = new EndpointAddress(...);
CalculatorClient client = new CalculatorClient(binding, remoteAddress);
int result = client.Add(5, 4); //This works!
}
app.config:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="MyConfig" /> <!-- did not add anything to this yet -->
</wsHttpBinding>
</bindings>
</system.serviceModel>
Исключение, которое я получаю: Content Type application / soap + xml; Служба charset = utf-8 не поддерживается
http://localhost/CalculatorService.svc. Привязки клиента и службы могут не совпадать. Я не вижу, как они могут не совпадать, когда я использую общий файл DLL между моим сервером и клиентом.
BasicHttpBinding
работает, но не
WSHttpBinding
(я даже не пытался
WS2007HttpBinding
.
Исключение: [System.ServiceModel.ProtocolException
]
{"Тип контента application / soap + xml; charset = utf-8 не поддерживается службой http://localhost/CalculatorService.svc. Привязки клиента и службы могут не совпадать."}
Внутреннее исключение: [System.Net.WebException
]
Удаленный сервер возвратил ошибку: (415) Невозможно обработать сообщение, потому что тип содержимого 'application / soap + xml; charset = utf-8 'не был ожидаемым типом' text / xml; кодировка = UTF-8' ..