У меня очень простой сервис WCF hello world, как показано ниже.Когда я звоню через проект asp.net, добавляя ссылку на веб-сервис, он работает отлично.Но когда я вызываю его, используя jQuery или стандартный вызов js ajax (используя XMLHttpRequest
), он вызывает функцию успеха, но возвращает нулевые данные.
Когда я пытался получить к нему доступ через браузер Firefox по этому адресу: http://localhost:8282/Test/TestService.svc/HelloWorld
Возвращено сообщение об ошибке с кодом «a: ActionNotSupported» и подробное описание ошибки как
Сообщение с действием '' не может быть обработано в получателе из-за несоответствия ContractFilter вEndpointDispatcher.Это может быть связано либо с несоответствием контракта (несоответствующие действия между отправителем и получателем), либо с несоответствием привязки / безопасности между отправителем и получателем.Убедитесь, что отправитель и получатель имеют одинаковый контракт и одну и ту же привязку (включая требования безопасности, например, Message, Transport, None).
Если я изменяю привязку на wsHttpBinding
, тогда она ничего не возвращает даже в Firefox.
Вот код:
Файл "Test / ITestService.svc":
[ServiceContract(Namespace = "http://localhost:8282/")]
public interface ITestService
{
[OperationContract]
string HelloWorld();
}
Файл "Test / TestService.svc":
public class TestService : ITestService
{
public string HelloWorld()
{
return "This is echo from server. Hello World";
}
}
Файл "web.config"
<system.serviceModel>
<services>
<service name="radMLRPC.Test.TestService" behaviorConfiguration="radMLRPC.Test.TestServiceBehavior"
<endpoint address="HelloWorld" binding="webHttpBinding" contract="radMLRPC.Test.ITestService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="radMLRPC.Test.TestServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>