【问题标题】:WCF Rest Method - This webpage is not availableWCF 休息方法 - 此网页不可用
【发布时间】:2012-12-05 03:07:25
【问题描述】:

我在使用 WCF 休息模板作为基础制作的服务中实现了一些方法。

这些方法运行良好,并且正在返回 Json 数据。

但是,我实现了一个返回对象列表的方法,这似乎不断给我一个“此网页不可用”错误。我不知道如何调试这个或可能是什么原因。有人有建议吗?

[WebGet(UriTemplate = "GetCars/{TypeId}", RequestFormat=WebMessageFormat.Json)]
public List<Car> GetCars(String TypeId)
{
    CarFilter carFilter = new CarFilter();

    carFilter.requestType = "product";
    carFilter.numberOfCars = -1;// Convert.ToInt32(numberOfCars);
    carFilter.carIdTo = -1;//Convert.ToInt32(carIdTo);
    carFilter.carIdFrom = -1;//Convert.ToInt32(carIdFrom);

    return CarDataAccess.GetCar(Convert.ToInt32(TypeId), carFilter);
}

谢谢。

【问题讨论】:

  • 您浏览的是哪个 URL?服务是如何托管的?

标签: c# wcf service


【解决方案1】:

有两件事要检查。首先,通过添加 [ServiceKnownType] 属性来查看这是否是 KnownType 问题:

[ServiceKnownType]

此外,在 .NET 4.0 之前,如果这是 WCF,您仍然需要方法上的 OperationContract 属性。试试这个:

[OperationContract]
[WebGet(UriTemplate = "GetCars/{TypeId}", RequestFormat=WebMessageFormat.Json)]
public List<Car> GetCars(String TypeId)

【讨论】:

  • 从 .NET 4.0 开始,您不再需要 [OperationContract] 属性,只需 [WebGet] 就足够了。
  • 好吧,那我今天看的 Pluralsight 视频就老了。 :) 我想我们需要 GW 告诉我们他正在使用哪个 .NET 版本...
  • 我使用的是 .NET 4.0。感谢您的建议!我想我似乎找到了解决方案,但如果有更好的解决方案,我肯定会接受。
  • 不幸的是,这在我发布的代码 sn-p 中并不明显。当时我什至没有想到,但是传回的数据是传递 Car 类型的继承对象(例如:SportsCar、Van 等)。我必须为所有的每一个都添加标签:[ServiceKnownType]可以返回的继承类型,看起来它正在工作。有谁知道这是否是一个有效的解决方案?
  • 这是一个有效的解决方案,但一个脆弱的 IMO。如果你用谷歌搜索,还有其他选择。
猜你喜欢
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 2013-11-15
相关资源
最近更新 更多