WCF RESTful сервис и выпуск EF - PullRequest
       1

WCF RESTful сервис и выпуск EF

0 голосов
/ 25 марта 2012

Сначала я создал базу данных в Azure с использованием кода EF, а теперь я хочу предоставить данные с помощью WCF REST.

Но у меня странное поведение. Когда я хочу вернуть список (т.е. элемент), мой браузер не может просто получить его.

И когда я переименовываю метод, который возвращает строку и возвращает string.item, тогда он работает: /

my Web.config :

<configuration>
 <connectionStrings>
  <add name="CijenolomciContext" connectionString="Server=tcp:*.database.windows.net;Database=myDataBase;User ID=*;Password=*;Trusted_Connection=False;Encrypt=True;" providerName="System.Data.EntityClient"/>
</connectionStrings>
<system.serviceModel>
  <services>
    <service name="Cijenolomci2.Servis.Service" behaviorConfiguration="ServiceBehavior">
      <endpoint address="" binding="webHttpBinding" contract="Cijenolomci2.Servis.IService" behaviorConfiguration="web"/>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="ServiceBehavior">
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="web">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
</system.serviceModel>
<system.web>
  <compilation debug="true"/>
</system.web>
</configuration>

Класс товара:

[DataContract]
public class Item
{
    [DataMember]
    public int ItemID  { get; set; }

    [Required(AllowEmptyStrings=false, ErrorMessage="You must enter a name!")]
    [MaxLength(50, ErrorMessage = "Name must be 50 characters or less")]
    [DataMember]
    public string Name { get; set; }

    [MaxLength(100, ErrorMessage = "Description must be 50 characters or less")]
    [DataMember]
    public string Description { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "You must enter a OldPrice!")]
    [DataMember]
    public Decimal OldPrice { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "You must enter a NewPrice!")]
    [DataMember]
    public Decimal NewPrice { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "You must enter a SaleStarts date!")]
    [DataMember]
    public DateTime SaleStarts { get; set; }

    [DataMember]
    public DateTime? SaleEnds { get; set; }

    [DataMember]
    public int CategoryID { get; set; }

    [DataMember]
    public virtual Category Category { get; set; }
}

IService:

[OperationContract]
    [WebGet(UriTemplate = "/items/", ResponseFormat = WebMessageFormat.Json)]
    List<Item> GetItems();

Service.svc:

public List<Item> GetItems()
    {
        var result = db.Items.AsNoTracking().ToList();           

        return result;
    }

1 Ответ

1 голос
/ 25 марта 2012

Вот несколько предложений, которые я могу сделать:

Одно из ваших свойств Item классов: public virtual Category Category { get; set; } Является ли класс Category также [DataContract]?

Проверьте WindowsПросмотр событий и посмотреть, если произошла ошибка.Иногда, если ошибки WCF являются достаточно серьезными и они размещены в IIS, процесс w3wp.exe сбрасывает ошибку в журнал Windows.

Включите ведение журнала трассировки WCF (просто Google "wcf trace logging") ипосмотрите, не регистрируется ли ошибка на сервере.

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