【问题标题】:Rush Webservice Conflict in Class Values类值中的 Rush Web 服务冲突
【发布时间】:2016-12-19 02:42:23
【问题描述】:

我有一个异步调用方法的网络服务:

   public Response Method1(Request request)
        {
            new StaticClass.ProcessAsync(request);

            return new Response
            {
                result = 0,
                resultDescription = "success"
            };

        }

ProcessAsync(Request request) 方法中,我从数据库中选择:

  • 一个连接字符串

  • 存储过程名称

    并执行该存储过程。

连接字符串和存储过程的值根据请求类的值而有所不同:

Settings settings = GetInfoFromDatabase(request);
string conString = settings.ConnectionsString;
string storedProcedureName = settings.StoredProcedureName;
//execute stored procedure

当该网络服务上有大量请求时,我经常收到以下错误:

System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'storedprocedurename'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

可能是什么问题?会不会因为 rush 导致 Settings 类的值发生冲突?

【问题讨论】:

  • 请提供StaticClass.ProcessAsync()GetInfoFromDatabase()方法的完整代码。这似乎是并发问题,但没有办法在不查看代码的情况下解决它。以及为什么要使用new 关键字? ProcessAsync 是一个类,你调用构造函数吗?

标签: c# sql web-services stored-procedures asynchronous


【解决方案1】:

您的数据库连接代码可能在短时间内多次访问数据库时出现问题。为什么不尝试EF连接并执行SP。它很简单,可以轻松处理这么多的请求。

【讨论】:

    【解决方案2】:

    有可能当出现 rush 时,其中一个用户在读取级别或执行级别都没有对数据库的权限。

    尝试查看 SQL Server 日志文件是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 2013-04-10
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多