我是OData和WCF數據服務的全新產品,因此這可能是一個簡單的問題。我正在使用VS Web Developer Express 2010,我在控制檯應用程序中託管了一個非常簡單的WCF數據服務。它從存儲庫(位於獨立的dll項目中)返回一個簡單的'Study'類的IQuerable集合,然後從另一個dll中的db項目(因此解決方案中的3個項目)中檢索'Study'類。OData/WCF數據服務不適用於複雜類型
我也有在項目db的「實驗」類可以有多個實驗研究進展。當我從Study中排除實驗課程時,所有工作都會正常進行,並且我會收回數據。當我將一個List集合添加到Study類時發生問題,然後在嘗試運行該服務時遇到運行時錯誤。在Firebug中,錯誤是'500內部服務器錯誤',並且瀏覽器中的消息是'請求錯誤。服務器在處理請求時遇到錯誤。查看服務器日誌瞭解更多詳情。'
我有IIS 7,我也剛安裝IIS 7.5,但再次它的品牌新的給我,所以我無法揣摩出服務託管或者查看服務器/網絡日誌。在'C:\ inetpub \ logs \ LogFiles \ W3SVC1'中只有IIS 7日誌可見。當我運行應用程序時,VS web服務器(Cassini)不啓動,所以這表明它是在IIS 7.5(?)中託管的。
所以
- 我該如何返回子類/複雜對象?
- 我如何知道我的服務託管在哪裏以及我可以在哪裏找到服務器日誌?
這裏的主機應用程序:
using MyStudyRepository;
using MyStudyDB;
namespace MyStudyService
{
public class Program
{
public static void Main(string[] args)
{
string serviceAddress = "http://localhost:998";
Uri[] uriArray = { new Uri(serviceAddress) };
Type serviceType = typeof(StudyDataService);
using (var host = new DataServiceHost(serviceType,uriArray))
{
host.Open();
Console.WriteLine("Press any key to stop service");
Console.ReadKey();
}
}
}
public class StudyDataService : DataService<StudyRepository>
{
public static void InitializeService(IDataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
}
}
}
這裏的倉庫:
using MyStudyDB;
namespace MyStudyRepository
{
public class StudyRepository
{
List<Study> _List = new List<Study>();
//Add constructor to populate myStudies list on creation of class
public StudyRepository()
{
for (int i = 1; i < 5; i++)
{
Study myStudy = new Study() { ID = i, StudyOwnerId = i, StudyName = "Study" + i.ToString() /*, Experiments = null */ };
_List.Add(myStudy);
}
}
public IQueryable<Study> Studies
{
get
{
return _List.AsQueryable<Study>();
}
}
}
}
而這裏的DB:
namespace MyStudyDB
{
public class Study
{
public int ID { get; set;}
public int StudyOwnerId { get; set; }
public string StudyName { get; set; }
//public List<Experiment> Experiments { get; set; }
}
public class Experiment
{
public int ID { get; set; }
public string Name { get; set; }
public int StudyId { get; set; }
}
}
嗨@Vitek,對答覆表示感謝。我添加了一個IQueryable屬性到我的資源庫類與Study屬性相同的方式,但我仍然遇到問題。還有什麼我應該做的? –
好吧我想通了,最終只需要一點調整..再次感謝:) –
你錯過了什麼? – Seph