REST WCF 服务不返回响应
本文关键字:返回 响应 服务 WCF REST | 更新日期: 2023-09-27 17:57:23
我创建了一个 rest wcf 服务。服务本身工作正常。从本地主机浏览中,我可以调用所有函数。下面是合约和函数。
问题是当我尝试使用 db.savechanges() 保存时,该服务不返回响应。如果我注释掉该行,则会返回 JSON 响应。
我的代码做错了吗?
[DataContract]
public class RouteObject{
public List<DetailRouteInfo>routeDetail {get; set;} /// this is Entity Model Class;
}
[OperationContract]
[WebGet(UriTemplate="GRDI?route={route}&cloc={cloc}", ResponseFormat=WebMessageFormat.Json)]
RouteObject GRDI(string route,string cLoc);
public RouteObject GRDI(string route, string cLoc) {
MapApiClient mClient = new MapApiClient();
Response mData= new Response();
var coord=route.Split('|');
RouteObject rObject = new RouteObject();
rObject.routeDetail = new List<DriverRouteInfo>(); ;
//this variable needs to updated later
//List<string> dummyCoord= new List<string>();
List<Task> wtask = new List<Task>();
mClient.getRouteData(coord.ToList(), (x) =>
{
mData = x;
},
(y) =>
{
wtask.Add(y);
}
);
if (wtask != null)
{
Task.WaitAll(wtask.ToArray());
wtask.Clear();
}
DriverRouteInfo droute=null;
// DO SOME MANIPULATION WITH THE DROUTE //
// THEN ADD LIST OF DROUTE INTO ROUTOBJECT.DETAILROUTE //
try
{
using (var db = new F2PDatabaseEntities())
{
UserInfo userinfo = db.UserInfoes.SingleOrDefault(u => u.UserId == 1);
//userinfo.DriverRouteInfoes = listRoute;
foreach(var dr in rObject.routeDetail){
userinfo.DriverRouteInfoes.Add(dr);
}
db.SaveChanges();
return rObject;
}
var check = droute.RouteId;
}
catch(SqlException ex) {
throw new FaultException(ex.Message); ;
}
}
检查此链接:
http://zamd.net/2008/07/08/error-handling-with-webhttpbinding-for-ajaxjson/
另一个提示:
-
将 [数据成员] 属性放在
public List<DetailRouteInfo>routeDetail {get; set;}
财产。并确保 DetailRouteInfo 类具有 [DataContract] 属性。
-
不要向客户端抛出异常。如果您无法正确处理,它会导致不良结果。生成一个基响应对象,其中包括用于返回响应代码或消息的属性,并从此基类继承 RouteObject 类。