我有一个带有Silverlight项目的Visual Studio解决方案,以及一个托管Silverlight应用程序的Web项目。 Web项目还包含一个由Silverlight ap。
调用的ASMX Web服务如下所述,对Web服务的某些调用工作正常,但是其他调用引发了一个CommunicationException,包装了WebException - 两者都显示消息“服务器返回了以下错误:'not found'”。
首先,这是我的原始方法,如上所述失败(为简单起见,实体名称已更改):
[WebMethod]
public Customer GetCustomer(int id)
{
CustomerDataContext dc = new CustomerDataContext();
return dc.Customers.SingleOrDefault(x => x.Id == id);
}
其次,为了调试问题,我把Linq带到了SQL和数据库中,并且下面的代码运行正常:
[WebMethod]
public Customer GetCustomer(int id)
{
Customer c = new Customer() { ID=1, Name="Bob", History = new EntitySet<CustomerHistory>() };
return c;
}
第三,考虑到这一点,两种方法之间的一个区别是第一种方法将包括客户历史中的值。我扩展了第二种方法来包含它,它又开始失败了:
[WebMethod]
public Customer GetCustomer(int id)
{
Customer c = new Customer() { ID=1, Name="Bob", History = new EntitySet<CustomerHistory>() };
c.History.Add(new CustomerHistory() { Id=1, CustomerId=1, Text="bla" });
return c;
}
我对如何进步感到困惑 - 我目前的想法是,当对象图更深时,这可能是Silverlight方面的反序列化问题。这理性上没有意义,但我想不出别的。我已经确认传输大小和缓冲区大小足够大(默认为2GB)。
任何指针都会受到赞赏。
答案 0 :(得分:0)
啊,着名的“未找到”错误,尝试使用web.config中的标记从该错误中获取详细信息。这将创建一个日志文件,提供错误的详细信息。
以下链接解释了如何执行此操作:
http://blogs.runatserver.com/lppinson/post/2010/04/15/Debugging-WCF-Web-Services.aspx