Silverlight4调用ASMX web服务

Silverlight4调用ASMX web服务,silverlight,web-services,asmx,Silverlight,Web Services,Asmx,我有一个带有Silverlight项目的Visual Studio解决方案,还有一个承载Silverlight应用程序的web项目。该web项目还包含一个由Silverlight ap调用的ASMX web服务 如下所述,对web服务的某些调用可以正常工作,而其他调用会导致抛出一个CommunicationException,并包装一个WebException,这两个调用都带有消息“服务器返回了以下错误:'未找到'” 首先,这是我原来的方法,如上所述失败(为了简单起见更改了实体名称): 其次,为

我有一个带有Silverlight项目的Visual Studio解决方案,还有一个承载Silverlight应用程序的web项目。该web项目还包含一个由Silverlight ap调用的ASMX web服务

如下所述,对web服务的某些调用可以正常工作,而其他调用会导致抛出一个CommunicationException,并包装一个WebException,这两个调用都带有消息“服务器返回了以下错误:'未找到'”

首先,这是我原来的方法,如上所述失败(为了简单起见更改了实体名称):

其次,为了调试该问题,我将Linq转换为SQL并将数据库排除在外,下面的代码运行良好:

    [WebMethod]
public Customer GetCustomer(int id)
{
    Customer c = new Customer() { ID=1, Name="Bob", History = new EntitySet<CustomerHistory>() };
    return c;
}
[WebMethod]
公共客户GetCustomer(内部id)
{
客户c=new Customer(){ID=1,Name=“Bob”,History=new EntitySet()};
返回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;
}
[WebMethod]
公共客户GetCustomer(内部id)
{
客户c=new Customer(){ID=1,Name=“Bob”,History=new EntitySet()};
c、 添加(新CustomerHistory(){Id=1,CustomerId=1,Text=“bla”});
返回c;
}
我一直在思考如何进步——我目前的想法是,当对象图更深入时,这可能是Silverlight方面的反序列化问题。这是没有道理的,但我想不出其他任何东西。我已经确认传输大小和缓冲区大小足够大(默认为2GB)

任何提示都将不胜感激。

ahhh对于著名的“未找到”错误,请尝试使用web.config中的标记获取该错误的详细信息。这将创建一个日志文件,提供错误的详细信息

以下链接详细说明了如何执行此操作:


您是否尝试返回客户历史记录列表,只是为了看看是否有效?您使用的是服务引用还是Web引用?
    [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;
}