Служба REST WCF не возвращает ответ

99
12

Я создал службу 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); ;
}

}

спросил(а) 2021-01-25T15:03:16+03:00 4 месяца, 3 недели назад
1
Решение
124

Проверьте эту ссылку:

http://zamd.net/2008/07/08/error-handling-with-webhttpbinding-for-ajaxjson/

Другие советы:

    Поместите атрибут [DataMember] поверх

    public List<DetailRouteInfo>routeDetail {get; set;}

    имущество. И убедитесь, что у класса DetailRouteInfo есть атрибут [DataContract].

    Не бросайте исключение клиенту. Это приводит к нежелательным результатам, если вы не можете справиться правильно. Создайте базовый объект ответа, который включает свойство для возврата кода ответа или сообщения и наследует класс RouteObject из этого базового класса.

ответил(а) 2021-01-25T15:03:16+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема