所以,这是我的问题。
我目前正在使用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; }
}
问题是:我无法执行任何填充“用户u”的请求,它总是返回以下异常:
Exception thrown: 'System.InvalidOperationException' in
System.ServiceModel.Web.dll
Exception thrown: 'System.InvalidOperationException' in
System.ServiceModel.dll
Exception thrown: 'System.InvalidOperationException' in
System.ServiceModel.dll
Exception thrown: 'System.InvalidOperationException' in
System.ServiceModel.dll
有我的POSTMAN请求: 输入请求:http://172.20.131.13/TDT/users/ {RandomUser} 而我的XML正文:
<User>
<Id>something</Id>
<Username>RandomUser</Username>
<Password>1234</Password>
<Name>Random User</Name>
<Email>random.user@randomemail.com</Email>
<Notes>http://www.random-link.com</Notes>
<BlackListed>false</BlackListed>
</User>
我的问题是,我如何构建将用户传递给我的服务的请求?
P.S。 :我正在使用邮递员来测试我的代码。
答案 0 :(得分:0)
好吧,经过很多努力,我设法做到了。我要做的就是在“ User xmlns”中添加对象的名称空间,然后将数据按正确的顺序放置。这是我的工作要求:
<User xmlns="http://schemas.datacontract.org/2004/07/namespace.lib.Objects" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<BlackListed>false</BlackListed>
<Email>okabe.rintarou@achannel.com</Email>
<Id></Id>
<Name>Okabe Rintarou</Name>
<Notes></Notes>
<Password>1234</Password>
<Username>Kyouma</Username>
</User>
已经1个星期了,我一直很愚蠢。
谢谢