【问题标题】:DevForce Classic query timeoutDevForce Classic 查询超时
【发布时间】:2017-06-14 21:36:30
【问题描述】:

我们的 DevForce Classic 应用程序在查询时出现超时问题。我们不断收到错误“请求被中止”。如果在 DevForce EF 版本here 中描述,则与我们遇到的问题最接近。它表示错误“事务已中止”表明 TransactionSettings 的超时时间太短。我看到的问题是超时(和 DefaultQueryStrategy 的 TransactionSettings)是只读的。

谁能提供一些有关如何解决此问题的指导?

【问题讨论】:

  • 这和 WCF 有什么关系?
  • 如果他使用WCF超时可能是由于请求操作超时造成的。错误消息没有多大帮助 - 它可能是 WCF、事务或数据库查询超时。

标签: c# wcf devforce


【解决方案1】:

您可以在 PersistenceManager 上设置自定义 DefaultQueryStrategy。例如,以下将使用通常的默认值和自定义 TransactionSettings,超时时间为 2 分钟:

var settings = new TransactionSettings(   
               UseDTCOption.UseConfigurationSetting, 
               System.Transactions.IsolationLevel.ReadCommitted, 
               new TimeSpan(0, 2, 0));
var queryStrategy = new QueryStrategy(QueryStrategy.Normal, settings);
myPM.DefaultQueryStrategy = queryStrategy;

如果您不想更改整个 PM 的 DefaultQueryStrategy,您可以在 RdbQuery 上传递一个查询策略。例如:

var query = new RdbQuery(typeof(Customer));
query.QueryStrategy = new QueryStrategy(myPM.DefaultQueryStrategy, settings);

超时可能来自 WCF 或数据库。如果更改事务超时值没有帮助,请从您的 BOS .config 文件中发布 元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2013-07-08
    • 2016-01-17
    • 2018-07-10
    • 2019-08-12
    相关资源
    最近更新 更多