WCF 异步操作超时

Timeout in WCF asynchronous operation

提问人:Abhijith Nayak 提问时间:10/31/2023 更新时间:10/31/2023 访问量:35

问:

在我的应用程序中,用于生成文件并将其下载到服务器位置并保存文件信息,我们使用的是 WCF 和 Sql Server,具有存储库模式的实体框架。

当我们输入要使用 WCF 生成的文件的计数(在 UI 中)时,会发生对 WCF 的调用,它将在 1-10000 之间变化,如果我输入计数< 7000,则没有错误,但如果计数> 7000,我在 WCF 中出现错误 -

异常:System.Data.Entity.Infrastructure.DbUpdateException:更新条目时出错。有关详细信息,请参阅内部异常。---> System.Data.Entity.Core.UpdateException:更新条目时出错。有关详细信息,请参阅内部异常。---> System.InvalidOperationException:与当前连接关联的事务已完成,但尚未释放。
必须先释放事务,然后才能使用连接来执行 SQL 语句。

我假设此错误是由于数据库超时造成的。

WCF 方法用于生成我的 C# 代码的文件 -

[ServiceContract]
public interface IRFService
{
    [OperationContract(IsOneWay = true)]
    void RequestForBulkPrint(Guid orderId);

WCF 配置 -

<system.serviceModel>
   <behaviors>
     <serviceBehaviors>
        <behavior>
           <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
           <serviceDebug includeExceptionDetailInFaults="false"/>
           <serviceTimeouts transactionTimeout="00:20:00"/>
        </behavior>
      </serviceBehaviors>
   </behaviors>
   <protocolMapping>
     <add binding="basicHttpsBinding" scheme="https"/>
   </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
 </system.serviceModel>

我在WCF中引用了业务层dll以重用其他逻辑。

所以应用程序的结构如下——

Web API -> 服务集成 -> 业务层 -> WCF(用于 生成文件) -> 业务层(用于生成文件) -> 存储库层(使用实体框架)-> Sql Server 数据库。

如果计数> 7000,我在业务层(从 WCF 调用)中出现错误。由于根据我们的业务逻辑发生了多个更新调用,因此错误行不一致。

如果此错误是由于 WCF 超时造成的,请告诉我,并请指导如何解决。

C# SQL-Server WCF 连接超 超时异常

评论

0赞 siggemannen 10/31/2023
这回答了你的问题吗?错误 - 与当前连接关联的事务已完成,但尚未释放
0赞 QI You 11/1/2023
是否使用 using 在数据库操作中自动释放对象?该问题可能是由大量未释放的对象引起的。您的项目可以承载大约 7,000 个对象。

答: 暂无答案