重复请求WCF服务

时间:2017-03-14 11:04:11

标签: c# wcf

我已经实现了如下的WCF方法。

    [ServiceContract]
    public interface IService1
    {
       [OperationContract]
       string string AddUser(string name,string department,string empCode);
    }

    public class Service1 : IService1
    {
            public string AddUser(string name,string department,string empCode)
            {
                UserDAL.LogRequest(name,department,empcode); //Log request in database

                bool isExist=UserDAL.IsExist(name,department,empCode); //Check same user exist or not
                if(isExist==false)
                {
                    UserDAL.Add(name,department,empCode);
                }
            }
    }

此WCF由.Net winform应用程序,SOAP UI,ORACLE等使用。在插入用户详细信息之前,我已检查数据库中不存在相同的用户(即.UserDAL.IsExist)。但它仍然在DB中插入了重复的记录。我还检查了“UserDAL.IsExist'方法,如果DB中存在相同的用户详细信息,则返回true。我注意到在几分之一秒内插入了重复记录。

1 个答案:

答案 0 :(得分:2)

嗯,是的。你的代码不安全。它将检查然后插入。如果两个人同时使用相同的信息呼叫您的服务怎么办?

  

Call1:UserDAL.IsExist返回false

     

Call2:UserDAL.IsExist返回false

     

Call1:插入

     

Call2:失败

您需要一个同步的单位。那应该是你的数据库。你应该插入并监听失败。为什么您的数据库甚至接受重复插入?你需要约束。