2010-09-01 2 views
1

Я создал службу WCf с помощью метода, который может получать запросы GET с использованием атрибута WebGET, я хочу, чтобы тот же метод получал вызовы Soap (что, когда программист выполняет ссылку Service на WCF , он сможет вызвать метод).Метод WCF, который получает запросы GET и SOAP

мой интерфейс:

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "GetData?value={value}")] 
    string GetData(int value); 
} 

Моя конфигурация:

<configuration> 
<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
</system.web> 
<system.serviceModel> 
    <behaviors> 
    <serviceBehaviors>  
    <behavior name="MyServiceBehavior"> 
    <serviceMetadata httpGetEnabled="true"/> 
    <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="WebBehavior"> 
    <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
    </behaviors> 
    <services> 
    <service name="WCFTestingGetService.Service1" behaviorConfiguration="MyServiceBehavior" > 
    <endpoint address="" binding="webHttpBinding" contract="WCFTestingGetService.IService1" behaviorConfiguration="WebBehavior"></endpoint> 
    </service> 
    </services> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer> 
</configuration> 

Могу ли я сделать Teh веб-метод GetData HTTP GET и SOAP метод?

Что мне нужно добавить в конфигурацию?

ответ

1

Вы можете использовать REST и SOAP в одной и той же услуги, но и в случае SOAP операция будет называться с HTTP POST. Ваш контракт определен правильно. Вы должны изменить свою конфигурацию:

<services> 
    <service name="WCFTestingGetService.Service1" behaviorConfiguration="MyServiceBehavior" > 
    <endpoint address="" binding="webHttpBinding" contract="WCFTestingGetService.IService1" behaviorConfiguration="WebBehavior"/> 
    <endpoint address="soap" binding="basicHttpBinding" contract="WCFTestingGetService.IService1"/> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
    </services> 
-1

Я бы удалил атрибут webget и использовал basichttpbinding. Затем вы можете получить доступ к сервису с любым клиентом мыла или wcf.

Вы также можете разместить asmx, кроме svc, но это не очень удобно.

С уважением,

Michel

+0

Я удалил атрибут Webget и использовал Basichttpbinding, теперь WCFtestClient не работает. мой конфиг является: <адрес конечной точки = "" привязки = "BasicHttpBinding" Контракт "WCFTestingGetService.IService1" behaviorConfiguration = "WebBehavior"> это нормально? Могу ли я работать с этим браузером при стирании веб-сайта? – Rodniko

+0

Также добавьте и убедитесь, что у вас есть это в разделе servicebehavior:

 Смежные вопросы

  • Нет связанных вопросов^_^