2012-03-28 2 views
3

Я создал службу WCF с поддержкой Ajax. Я могу использовать сервис из javascript-кода, и WebService работает по назначению. Но я хочу написать ATP вокруг него. Итак, я добавляю webservice в качестве «Service Reference» в свой проект ATP. Затем я использую вызов webservice, как обычно. Все это прекрасно компилируется. Но когда я бегу СПС, он бросает меня эту ошибкуПредоставление службы WCF с включенным Ajax кодом C#

«System.InvalidOperationException: Не удалось найти конечную точку элемента с именем„ServiceReference1.IWCFService“и договор„ServiceReference1.IWCFService“в разделе конфигурации клиента ServiceModel Это. возможно, потому, что для вашего приложения не найден ни один файл конфигурации, или потому, что в элементе клиента не может быть найден какой-либо элемент конечной точки, соответствующий этому имени ».

Это то, что у меня есть в файле App.config ATP.

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_IWCFService" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
         realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://yashworkspace/BSS/WS/ServiceReference1.svc" 
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWCFService" 
      contract="ServiceReference1.IWCFService" name="BasicHttpBinding_IWCFService" /> 
    </client> 
<services> 
    <service name="ServiceReference1.WCFService"> 
     <endpoint address="http://yashworkspace/BSS/WS/ServiceReference1.svc" behaviorConfiguration="org.proj.WebServices.WCFServiceAspNetAjaxBehavior" 
       binding="webHttpBinding" contract="org.proj.WebServices.IWCFService" /> 
    </service> 
</services> 
<behaviors> 
    <endpointBehaviors> 
     <behavior name="org.proj.WebServices.WCFServiceAspNetAjaxBehavior"> 
      <enableWebScript /> 
     </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 

Пожалуйста, дайте мне знать, что могло бы пойти не так ??? У меня нормальная служба WCF, и это работает отлично.

Пожалуйста, помогите.

рассматривает Yash

ответ

1

Вышеупомянутый ответ от Drew Marsh частично прав. Но главный вопрос решается следующим образом. Кроме того, Здесь проблема заключается в том, когда u выставляет WCF как службу WCF с поддержкой ajax, она обменивается данными с использованием JSON. Когда вы вызываете одну и ту же услугу из кода C#, она вызывает ее с использованием запроса SOAP. Поэтому вам нужно настроить службу таким образом, чтобы она принимала как запросы JSON, так и SOAP. Так, в разделе услуг, вам необходимо настроить его следующим образом

<services> 
     <service name="ServiceReference1.WCFService"> 
      <endpoint address="" behaviorConfiguration="org.proj.WebServices.WCFServiceAspNetAjaxBehavior" 
      binding="webHttpBinding" contract="org.proj.WebServices.IWCFService" /> 
      <endpoint address="soapreq" behaviorConfiguration="org.proj.WebServices.MyServiceSOAPBehaviour" bindingConfiguration="BasicHttpBinding_IUpdateService" 
        binding="basicHttpBinding" contract="org.proj.WebServices.IWCFService" name="ServiceReference1.IWCFService" /> 
     </service> 
    </services> 

В разделе модели поведения, вы должны настроить оконечное поведение следующим образом ..

<endpointBehaviors> 
      <behavior name="org.proj.WebServices.WCFServiceAspNetAjaxBehavior"> 
       <enableWebScript /> 
      </behavior> 
      <behavior name="org.proj.WebServices.MyServiceSOAPBehaviour"> 
      </behavior> 
     </endpointBehaviors> 
+0

На самом деле вам не нужно общаться с помощью SOAP с C#. Вы можете изменить привязку клиента, чтобы также использовать webHttpBinding, что приведет к тому, что он будет общаться таким же образом с помощью JSON. –

0

Проблема это имя конечной точки не соответствует тому, что экземпляр клиента ищет:

<endpoint address="http://yashworkspace/BSS/WS/ServiceReference1.svc" 
     binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWCFService" 
     contract="ServiceReference1.IWCFService" name="BasicHttpBinding_IWCFService" /> 

Согласно сообщению об ошибке он ожидает имя также быть "ServiceReference1.IWCFService" поэтому вы - это конечная точка, которая вам нужна.

<endpoint address="http://yashworkspace/BSS/WS/ServiceReference1.svc" 
     binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWCFService" 
     contract="ServiceReference1.IWCFService" name="ServiceReference1.IWCFService" /> 
+0

Вашего ответ частично прав. Благодарю. По крайней мере, это показало мне способ отладки вещей. – Yash

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