2011-01-14 1 views
0

I JSONP включил мой WCF ServiceContract. Клиент успешно вызывает службу JSONP (OperationContract). У меня есть ряд других OperationContracts (с использованием того же ServiceContract), который я хочу выставить с использованием конечной точки basicHttpBinding (SOAP), используя тот же URI. Я думаю, что моя служба WebConfig настроена правильно. Когда я делаю такую ​​вещь, должен ли я добавить ссылку на службу (прокси) с помощью диалогового окна «Добавить ссылку на службу» VS? Или мне нужно вручную генерировать код клиента в codebehind? Если мне нужно вручную это сделать, может ли кто-нибудь привести пример? Или моя служба WebConfig настроена неправильно? Я звоню JSONP службы с помощью этого: http://Flixsit:1000/FlixsitWebServices.svc/jsonpНастройка WCF JSONP и SOAP Конечные точки Прослушивание в том же URI

Спасибо так много ...

<system.serviceModel> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" /> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="webHttpBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="DefaultBehaviors">   
     <serviceMetadata httpGetEnabled="true" />   
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <webHttpBinding> 
    <binding name="JSONPBinding" crossDomainScriptAccessEnabled="true" /> 
    </webHttpBinding> 
    <basicHttpBinding> 
    <binding name="SOAPBinding" /> 
    </basicHttpBinding> 
</bindings> 
<services> 
    <service name="Flixsit.Services.FlixsitWebServices" behaviorConfiguration="DefaultBehaviors"> 
    <clear /> 
    <endpoint name="JSONPEndPoint" address="jsonp" 
            binding="webHttpBinding" 
            bindingConfiguration="JSONPBinding" 
            contract="Flixsit.Services.IFlixsitWebServices" 
            behaviorConfiguration="webHttpBehavior" /> 
    <endpoint name="HttpEndPoint" address="" 
            binding="basicHttpBinding" 
            bindingConfiguration="SOAPBinding" 
            contract="Flixsit.Services.IFlixsitWebServices" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://Flixsit:1000/FlixsitWebServices.svc" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services>  

ответ

0

После инструмента вокруг некоторое время я создаю ChannelFactory, как показано ниже (в коде). Теперь услуги оказываются на обеих конечных точках.

try 
    { 
     EndpointAddress address = new EndpointAddress("http://Flixsit:1000/FlixsitWebServices.svc"); 
     WSHttpBinding binding = new WSHttpBinding(); 
     ChannelFactory<IFlixsitWebServices> factory = new ChannelFactory<IFlixsitWebServices>(binding, address); 
     IFlixsitWebServices channel = factory.CreateChannel(); 

     //call the service operation 
     var customer = channel.GetCustomers(); 

     GridView1.DataSource = customer; 
     GridView1.DataBind(); 

     //close the channel 
     ((ICommunicationObject)channel).Close(); 

     //close factory 
     factory.Close(); 
    } 
    catch (Exception ex) 
    { 
     //log ex; 
    } 

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

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