Tag: transactioncope

DTC防火墙要求?

我正在尝试建立一个环境,在该环境中,源自Web服务器(asp.net)的TransactionScope将通过WCF将事务流向应用程序服务器,然后再流向数据库。 由于我被迫使用SQL Server 2005数据库,这通常会导致事务被“提升”为分布式事务(可以在此TransactionScope中包装多个服务调用),这意味着需要启用分布式事务协调器。 我已经成功地在一个本地机器上工作,其中Web服务器和应用服务器托管在同一台机器上,连接到远程数据库。 DTC在端口135上进行RPC连接(以及上限)的通信。 我没有两个盒子设置来测试……对于DTC工作,是否需要打开端口135(从防火墙的角度来看)以便在Web服务器和应用程序服务器之间进行通信,或者只是在应用程序服务器上进行通信到数据库? 我从部署人员那里得到了关于从网络开放135到app服务器的回击,想知道这是否是必要的。 我还没有找到在线的doc,为我澄清这一点。 一种边缘问题,希望能有一些可能遇到过这种情况的人提供一些见解。 问候, GA

事务范围超时10分钟

我在C#中运行了一个长期的TransactionScope 。 我告诉范围它应该有很长的时间跨度,但我仍然会超时。 什么可能导致这个? TransactionOptions transactionOptions = new TransactionOptions(); transactionOptions.IsolationLevel = IsolationLevel.ReadCommitted; transactionOptions.Timeout = TimeSpan.MaxValue; using (var ts = new TransactionScope(TransactionScopeOption.Required, transactionOptions)) { DoLongCode(); }

为什么TransactionScope不能与Entity Framework一起使用?

请参阅下面的代码。 如果我初始化多个实体上下文,那么我只在第二组代码上得到以下exception。 如果我注释掉第二组就行了。 {“底层提供商在Open上失败。”} 内部:{“与底层事务管理器的通信失败。”} 内部:{“错误HRESULT E_FAIL已从调用COM组件返回。”} 请注意,这是一个示例应用程序,我知道连续创建2个上下文没有意义。 但是,生产代码确实有理由在同一个TransactionScope创建多个上下文,并且无法更改。 编辑 这是我之前尝试设置MS-DTC的问题。 似乎在服务器和客户端上都启用了它。 我不确定它是否设置正确。 另请注意,我尝试这样做的原因之一是TransactionScope中的现有代码使用ADO.NET和Linq 2 Sql …我希望那些也使用相同的事务。 (这可能听起来很疯狂,但如果可能,我需要让它工作)。 如何在C#中使用TransactionScope? 解 Windows防火墙阻止了与MS-DTC的连接。 using(TransactionScope ts = new System.Transactions.TransactionScope()) { using (DatabaseEntityModel o = new DatabaseEntityModel()) { var v = (from s in o.Advertiser select s).First(); v.AcceptableLength = 1; o.SaveChanges(); } //-> By commenting out this section, it […]

TransactionScope与C#中的文件

我一直在使用TransactionScope来处理数据库,感觉还不错。 我正在寻找的是以下内容: using(var scope=new TransactionScope()) { // Do something with a few files… scope.Complete(); } 但显然这不起作用 – 如果有20个文件,并且第9个文件发生exception,所有之前的8个仍然保持更改而其余的保持不变 – 不执行回滚。 那么,为文件实现类似范围的行为的最佳方法是什么? 我希望有一个简单的答案,但如果没有,你能给我一些指示,或者指点我的相关文章吗?

如何在C#中使用TransactionScope?

我正在尝试使用TransactionScope ,但继续获得以下exception。 如果重要的话,该应用程序在与数据库不同的机器上运行。 我正在使用SQL Server 2005。 已禁用分布式事务管理器(MSDTC)的网络访问。 请使用组件服务管理工具在MSDTC的安全配置中启用DTC以进行网络访问。 using (TransactionScope tsTransScope = new TransactionScope()) { //Do stuff here tsTransScope.Complete(); } 编辑 我根据反馈做了一些改变。 现在我收到这个错误: “错误HRESULT E_FAIL已从调用COM组件返回。” “与基础交易经理的沟通失败了。” 解决方案我认为接受的答案解决了我遇到的最初问题。 第二个错误似乎特定于Entity Framework。 我会发布另一个问题。 以下是客户端上的属性: 客户http://sofzh.miximages.com/c%23/client.jpg 以下是服务器上的属性: 服务器http://sofzh.miximages.com/c%23/server.jpg