我有一个在POST和PUT上调用的方法。该方法更新当前用户的用户名。查询如下所示:
public override void Save()
{
if (SessionManager.CurrentSession.Query<User>()
.Any(u => u.Username == this.Username))
throw new DuplicateNameException("Username already exists");
...
这适用于POST,每次我尝试使用db中存在的用户名创建新用户时,都会抛出DuplicateNameException。但是,在PUT上,当我尝试将现有用户名更改为已存在的用户名时,此异常永远不会被触发。我不知道为什么POST和PUT之间的查询会有所不同。有什么想法吗?提前谢谢。
答案 0 :(得分:2)
奇。您已确认您希望执行的代码实际上正在执行吗?就像在,PUT调用不会导致跳过这个或者其他一些方法被调用?并且PUT调用IS实际上是在命中服务器吗?进行PUT调用时,“用户名”实际上是否正确填充?当进行PUT调用时,“CurrentSession”属性和“Query”调用是否实际上绑定到它们应该是什么并返回您期望的数据(例如,它可能返回空列表,因为某些连接或其他尚未设置在这种情况下)?
答案 1 :(得分:0)
您是从表单获取用户名吗?我认为PUT没有正确传递用户名。