Предоставление службы WCF webHttpBinding для мобильных клиентов - PullRequest
0 голосов
/ 27 сентября 2010

Я создал очень простую сервисную операцию, которая должна записывать контент в мою базу данных.Этот сервис выглядит следующим образом:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(IncludeExceptionDetailInFaults = false)]
public class myService : ImyService
{
  public MyServiceResult MyMethod(string p1, string p2)
  {
    try
    {
      // Do stuff
      MyResponseObject r = new MyResponseObject();
      r.Property1 = DateTime.Now;
      r.Property2 = "Some other data";
      return r;
    }
    catch (Exception ex)
    {
      return null;
    }
  }
}

ImyService определен, как показано здесь:

[ServiceContract]
public interface ImyService
{
  [OperationContract]
  [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
  MyServiceResult MyMethod(string p1, string p2);
}

Этот сервис будет доступен как клиентским приложениям WP7, так и iPhone.Из-за этого я считаю, что мне нужно использовать webHttpBinding.Это заставило меня использовать следующие настройки в моем файле web.config:

<system.serviceModel>      
  <behaviors>
    <endpointBehaviors>
      <behavior name="myServiceBehavior">
        <webHttp />
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>

  <serviceHostingEnvironment 
    aspNetCompatibilityEnabled="true"   
    multipleSiteBindingsEnabled="true" />
  <services>
    <service name="myService">
      <endpoint address="" 
        behaviorConfiguration="myServiceBehavior" 
        binding="webHttpBinding" 
        contract="ImyService" />
    </service>
  </services>
</system.serviceModel>

Служба и приложение WP7 являются частью одного и того же решения.Я могу успешно добавить ссылку на сервис в моем приложении.Когда я запускаю приложение, страница, ссылающаяся на сервис, выдает ошибку.В сообщении об ошибке говорится:

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

Что я делаю неправильно?Просто кажется, что это должно быть довольно простым делом.Спасибо за вашу помощь.

1 Ответ

1 голос
/ 27 сентября 2010

Вы скопировали файл "ServiceReferences.ClientConfig" в проект Windows Phone 7? Этот файл находится в вашем проекте WCF. Кроме того, клиенты WP7 поддерживают только базовую HttpBinding. Таким образом, вы можете увидеть пустой файл «ServiceReferences.ClientConfig», если не переключитесь на basicHttpBinding

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...