我是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