REST 服务 return 不工作
REST service return not working
我有一个休息服务合同,过去工作得很好 returning class IdocEntity 的一个对象。
这是工作代码:
[OperationContract]
[WebInvoke(
Method = "*",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "login/{userName}/{password}/{ip}"
)]
IdocEntity Login(string userName, string password, string ip);
public IdocEntity Login(string userName, string password, string ip)
{
[some checks]
try
{
userEntity = checkUSR(userName, password, ip, string.Empty);
if (userEntity == null)
{
ArgumentException exx = new ArgumentException("User not found");
throw new WebFaultException<ErrorMessage>(new ErrorMessage(exx), HttpStatusCode.Unauthorized);
}
return userEntity;
}
catch (WebFaultException<ErrorMessage>)
{
throw;
}
catch (Exception ex)
{
throw new WebFaultException<ErrorMessage>(new ErrorMessage(ex), HttpStatusCode.InternalServerError);
}
}
我还有另一个合同 returning class 配置文件的一个对象。
配置文件从 IdocEntity 扩展而来,但它不起作用。这是我的对象简介:
[Serializable]
[DataContract]
public class Profile : IdocEntity
{
[a bunch of properties with [DataMember] on top of them]
public Profile(Guid entityId) :
base(entityId)
{ }
[a bunch of methods to get or update a profile]
}
这是 return 配置文件
的剩余代码
[OperationContract]
[WebInvoke(
Method = "*",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "updateProfile"
)]
Profile UpdateProfile(string entityId, string mail, string telf, string fax, string direc);
public Profile UpdateProfile(string entityId, string mail, string telf, string fax, string direc)
{
try
{
if (!string.IsNullOrEmpty(entityId))
{
Profile perfil = Profile.GetProfileByEntityId(new Guid(entityId));
perfil.Mail = mail;
perfil.Telephone = telf;
perfil.Fax = fax;
perfil.Direccion = direc;
Profile.UpdateProfileDataByEntityId(perfil);
return perfil;
}
else
{
ArgumentException exx = new ArgumentException("Error. No se encuentra el usuario.");
throw new WebFaultException<ErrorMessage>(new ErrorMessage(exx), HttpStatusCode.Unauthorized);
}
}
catch (WebFaultException<ErrorMessage>)
{
throw;
}
catch (Exception ex)
{
throw new WebFaultException<ErrorMessage>(new ErrorMessage(ex), HttpStatusCode.InternalServerError);
}
}
现在,我将第一个更改为 return 配置文件对象,以获取更多信息,但它停止工作了。然后我检查了第二个,它也失败了。
一切都很好,但我的休息服务 returning 0 No Response
IdocEntity 和 Profile 都有它们的 [DataContract] 和 [DataMember] 内容,并且 IdocEntity 过去工作得很好。
也许值得一提的是 Profile 有一个 属性 是一个 Hashtable
编辑:问题不在于哈希表属性,没有它也不起作用。
有帮助就好了,谢谢:)
我终于找到问题所在了。我的配置文件 class 上的属性之一是我已初始化为
的 DateTime
DateTime bornDate = new DateTime()
在我的更新中,我没有给它任何值。
我改成了
DateTime bornDate = DateTime.now;
现在完美运行
我有一个休息服务合同,过去工作得很好 returning class IdocEntity 的一个对象。
这是工作代码:
[OperationContract]
[WebInvoke(
Method = "*",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "login/{userName}/{password}/{ip}"
)]
IdocEntity Login(string userName, string password, string ip);
public IdocEntity Login(string userName, string password, string ip)
{
[some checks]
try
{
userEntity = checkUSR(userName, password, ip, string.Empty);
if (userEntity == null)
{
ArgumentException exx = new ArgumentException("User not found");
throw new WebFaultException<ErrorMessage>(new ErrorMessage(exx), HttpStatusCode.Unauthorized);
}
return userEntity;
}
catch (WebFaultException<ErrorMessage>)
{
throw;
}
catch (Exception ex)
{
throw new WebFaultException<ErrorMessage>(new ErrorMessage(ex), HttpStatusCode.InternalServerError);
}
}
我还有另一个合同 returning class 配置文件的一个对象。
配置文件从 IdocEntity 扩展而来,但它不起作用。这是我的对象简介:
[Serializable]
[DataContract]
public class Profile : IdocEntity
{
[a bunch of properties with [DataMember] on top of them]
public Profile(Guid entityId) :
base(entityId)
{ }
[a bunch of methods to get or update a profile]
}
这是 return 配置文件
的剩余代码[OperationContract]
[WebInvoke(
Method = "*",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "updateProfile"
)]
Profile UpdateProfile(string entityId, string mail, string telf, string fax, string direc);
public Profile UpdateProfile(string entityId, string mail, string telf, string fax, string direc)
{
try
{
if (!string.IsNullOrEmpty(entityId))
{
Profile perfil = Profile.GetProfileByEntityId(new Guid(entityId));
perfil.Mail = mail;
perfil.Telephone = telf;
perfil.Fax = fax;
perfil.Direccion = direc;
Profile.UpdateProfileDataByEntityId(perfil);
return perfil;
}
else
{
ArgumentException exx = new ArgumentException("Error. No se encuentra el usuario.");
throw new WebFaultException<ErrorMessage>(new ErrorMessage(exx), HttpStatusCode.Unauthorized);
}
}
catch (WebFaultException<ErrorMessage>)
{
throw;
}
catch (Exception ex)
{
throw new WebFaultException<ErrorMessage>(new ErrorMessage(ex), HttpStatusCode.InternalServerError);
}
}
现在,我将第一个更改为 return 配置文件对象,以获取更多信息,但它停止工作了。然后我检查了第二个,它也失败了。
一切都很好,但我的休息服务 returning 0 No Response
IdocEntity 和 Profile 都有它们的 [DataContract] 和 [DataMember] 内容,并且 IdocEntity 过去工作得很好。
也许值得一提的是 Profile 有一个 属性 是一个 Hashtable 编辑:问题不在于哈希表属性,没有它也不起作用。
有帮助就好了,谢谢:)
我终于找到问题所在了。我的配置文件 class 上的属性之一是我已初始化为
的 DateTimeDateTime bornDate = new DateTime()
在我的更新中,我没有给它任何值。
我改成了
DateTime bornDate = DateTime.now;
现在完美运行