发送带有对象参数的 PUT 请求(.NET WCF 服务)

所以,这是我的问题。


我目前正在开发 WCF REST 服务,我现在需要实现一种允许我创建帐户(用户帐户)的方法。这次在网上搜索并没有帮助我,这就是为什么我要问一个真正知道我的意思的人 x)。


所以,这是我的方法:


[WebInvoke(Method = "PUT", UriTemplate = "users/{username}", 

    RequestFormat = WebMessageFormat.Xml)]

    [OperationContract]

    void PutUserAccount(string username, User u)

    {

        Debug.WriteLine("Entering method [PutUserAccount]");

        // Check if user exists

        User user = DBManager.FindUser(username);

        if (user == null)

        {

            try

            {

                //Create or update new user

                u.Id = GetUserLink(username);

                u.Notes = GetUserNotesLink(username);

                u.BlackListed = false;

                DBManager.AddUser(u);


                // Set status to created and include new URI in Location 

                //header

                WebOperationContext.Current.OutgoingResponse.SetStatusAsCreated(GetUserProfile(username).Id);

            }

            catch (Exception e)

            {

                Debug.WriteLine("_PutUserAccount || Exception [" + e.Message + "]");

            }

        }

        else if (!DBManager.IsUserAuthorized(username, WebOperationContext.Current))

        {

            Debug.WriteLine("_PutUserAccount - 1. This user isn't allowed to add users");

            WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;

            return;

        }

    }

这是我的“用户”类:


[DataContract]

class _User

{

    [DataMember]

    public string Id { get; set; }

    [DataMember]

    public string Username { get; set; }

    [DataMember]

    public string Password { get; set; }

    [DataMember]

    public string Name { get; set; }

    [DataMember]

    public string Email { get; set; }

    [DataMember]

    public string Notes { get; set; }

    [DataMember]

    public bool BlackListed { get; set; }

}

我的问题是,我必须如何构建将用户传递给我的服务的请求?


PS:我正在使用邮递员来测试我的代码。


慕桂英3389331
浏览 299回答 1
1回答

慕田峪7331174

好吧,经过很多努力,我设法做到了。我所要做的就是在“用户 xmlns”中添加我的对象的命名空间,并按正确的顺序放置数据。这是我的工作要求:<User xmlns="http://schemas.datacontract.org/2004/07/namespace.lib.Objects" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">&nbsp; &nbsp; <BlackListed>false</BlackListed>&nbsp; &nbsp; <Email>okabe.rintarou@achannel.com</Email>&nbsp; &nbsp; <Id></Id>&nbsp; &nbsp; <Name>Okabe Rintarou</Name>&nbsp; &nbsp; <Notes></Notes>&nbsp; &nbsp; <Password>1234</Password>&nbsp; &nbsp; <Username>Kyouma</Username></User>我尝试这样做已经 1 周了,对我来说很愚蠢。
打开App,查看更多内容
随时随地看视频慕课网APP