【问题标题】:Is it possible for parallel processing in Oauth authentication是否可以在 Oauth 身份验证中进行并行处理
【发布时间】:2018-01-25 06:20:30
【问题描述】:

我正在尝试使用多线程来连接 CData 驱动程序。是否可以并行处理 CData 中的数据。

OdbcConnection conn = new OdbcConnection();
conn.ConnectionString = "xxxx";
Task task1 = Task.Factory.StartNew(() => ReadData(conn));
Task task2 = Task.Factory.StartNew(() => ReadData(conn));
Task task3 = Task.Factory.StartNew(() => ReadData(conn));
Task task4 = Task.Factory.StartNew(() => ReadData(conn));
Task task5 = Task.Factory.StartNew(() => ReadData(conn));
public static void ReadData(OdbcConnection con)
        {
                con.Open();
                // code
         }

请告诉我有什么解决办法。提前致谢。

【问题讨论】:

  • 你试过了吗?您是否看到任何错误消息或意外行为?如果是这样,请提供错误消息或描述意外行为。
  • 是的,我已经尝试过此代码并遇到如下问题:URI“'localhost:7485'”的注册已经存在。端口为第一个线程启动并为下一个线程抛出异常。
  • 您能说明一下您使用的是哪个 CData 驱动程序吗?不同的驱动程序对 OAuth 有不同的要求,具体取决于数据源(Salesforce、QuickBooks、Google BigQuery 等)。
  • 我正在为 Cdata Quickbooks 和 Google 分析数据源尝试这个。对于这两个驱动程序,我都面临同样的 Oauth 身份验证问题。
  • 您好 Jerod,我已经尝试过您的解决方案,但我的机器中没有这样的文件夹。我的路径是:“C:\Users\xxx\AppData\Roaming\CData” 我没有驱动程序文件夹。我尝试卸载并重新安装 cdata Google 分析驱动程序。正如您所提到的,我仍然没有在此路径中找到任何驱动程序文件夹。

标签: multithreading parallel-processing odbc cdata cdata-drivers


【解决方案1】:

这是可能的。如果使用 Other 属性设置 OAuthSettingsLocation 属性,则可以执行数据的并行处理。您可以在 DSN 中设置该属性,也可以在无 DSN 连接中动态设置(参见下面的代码示例)。

OAuthSettingsLocation - 保存 OAuth 值的设置文件的位置。这可以是驱动程序具有读/写权限的磁盘上的任何位置。

使用 DSN 管理器执行 OAuth

在使用驱动程序之前,您需要通过服务进行身份验证。为此,您可以使用 DSN 向导中的测试连接。

  1. 打开 ODBC 数据源管理器(从开始菜单,键入“ODBC”)
  2. 使用驱动程序选择或创建新的 DSN。
  3. 在Other 属性中设置OAuthSettingsLocation 属性,然后单击Test Connection。 (系统将提示您在新的浏览器窗口中对服务进行身份验证。)

代码示例

string driver = "QuickBooksOnline 的 CData ODBC 驱动程序"; string oauthSettingsLocation = "C:/users//AppData/Roaming/CData/QuickBooksOnline ODBC 驱动程序"; string connString = "DRIVER={" + driver + "};Other=OAuthSettingsLocation=" + oauthSettingsLocation; 任务task1 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString))); 任务task2 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString))); 任务task3 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString))); 任务task4 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString))); 任务task5 = Task.Factory.StartNew(() => ReadData(new OdbcConnection(connString)));

注意

CData Software 还提供 ADO.NET 提供程序,可以在 .NET 应用程序中提供更原生的体验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-09
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多