REST服务返回不起作用

时间:2015-03-09 09:07:14

标签: c# rest constructor datacontract

我有一份休息服务合同,过去很好地返回了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);
        }
    }

我还有另一个合同,返回类Profile的对象。

Profile来自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]
}

这是返回个人资料的其余代码

[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);
        }
    }

现在,我更改了第一个返回Profile对象,以获取更多信息并停止工作。然后我检查了第二个,它也失败了。

它做的一切都很好,但我的休息服务正在返回0 No Response

IdocEntity和Profile都有[DataContract]和[DataMember]内容,并且IdocEntity用于工作正常。

也许值得一提的是,Profile有一个Hashtable属性 编辑:问题不是哈希表属性,没有它也不起作用。

一些帮助会很好,谢谢:)

1 个答案:

答案 0 :(得分:0)

我终于发现了什么问题。我的Profile类中的一个属性是我初始化为

的DateTime

DateTime bornDate = new DateTime()

在我的更新中,我没有给它任何值。

我把它改成了

DateTime bornDate = DateTime.now;

现在效果很好