我的WCF服务出了问题。这是
[OperationContract]
[WebGet(UriTemplate = "/needs", ResponseFormat = WebMessageFormat.Json)]
List<CustomerNeed> getAllCustomerNeeds();
当我进入调用此服务的页面时,我收到此错误
GET http://localhost:666/rest/Service1.svc/needs net::ERR_CONNECTION_RESET
当我尝试返回字符串而不是List时,它会起作用。
CustomerNeed是一个通过EntityFramework从我的数据库生成的类。
在我的服务中,我只调用另一个类中的其他方法;
public List<CustomerNeed> getAllCustomerNeeds()
{
var needs = from cn in db.CustomerNeeds
select cn;
List<CustomerNeed> list = new List<CustomerNeed>();
foreach (CustomerNeed cusN in needs)
{
list.Add(cusN);
}
return list;
}
也许是因为我的表CustomerIned中有一个外键?
当我做&#34; LINQ to entities&#34;要导入我的数据库,是否必须导入由于多对多关系而创建的表?
答案 0 :(得分:1)
我建议您创建一个简单的自定义类,它将代表您的CustomerNeeds数据库实体,在服务器端启动此对象并传递给客户端应用程序。它可以帮助您避免此问题,也建议您通过WCF服务传输数据。
在这种情况下,您需要执行以下步骤: 1)创建一个公共类CustomerNeeds并使用DataContract属性对其进行标记。例如:
[DataContract]
public class CustomerNeeds
{
[DataMember]
public SomeDataType PropertyName {get; set;}
}
2)在服务上启动此对象,将getAllCustomerNeeds()方法中的返回数据类型从实体类更改为新创建的类CustomerNeed,并将此数据传递给clien
就是这样。
答案 1 :(得分:0)
您还没有显示db
的位置/内容,但我假设您使用的是实体框架,因为您的标记意味着它是一个实体上下文。您可能在上下文已经处理或没有正确更新的情况下遇到一些问题(但如果情况确实如此,我希望您收到稍微不同的错误。)
看起来你在你的功能中经历了一些不必要的步骤,我认为这样的事情会起作用:
public List<CustomerNeed> getAllCustomerNeeds()
{
using (var db = new YourContext()) // plug in your context object
{
return db.CustomerNeeds.ToList();
}
}
另外,当你说它&#34;作为一个字符串&#34;你回来的东西很像'#34;你好世界&#34 ;?您可能需要查看您的WCF配置,以确保它可以处理您尝试来回传递的数据量。
希望这有帮助!