2012-03-25 87 views
0

我使用EF Code首先在Azure上創建了數據庫,現在我想使用WCF REST公開數據。WCF RESTful服務和EF問題

但是,我收到了一些奇怪的行爲。當我想返回一個列表(即Item)時,我的瀏覽器不能簡單地檢索它。

當我重新命名的方法,以便返回字符串,返回string.item,那麼它的工作原理:/

的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; 
    } 
+0

你有什麼錯誤? – 2012-03-25 14:34:13

+0

在fiddler HTTP 504中 – Bip 2012-03-25 14:36:46

回答

1

的夫婦建議我可以是:

你的一個Item類的屬性是:public virtual Category Category { get; set; }是在Category類也[DataContract]

檢查Windows事件查看器,看看是否有錯誤記錄。有時如果WCF錯誤足夠嚴重,並且它是IIS託管的,那麼w3wp.exe進程會向Windows日誌丟失一個錯誤。

打開WCF跟蹤日誌記錄(僅Google「wcf跟蹤日誌記錄」)並查看它是否在服務器上記錄錯誤。