我正在使用可以被其他组件重用的类库.在这个类库中,我使用unity来进行依赖注入.对于这个类库,我创建了一个测试项目.调用者也获得了一个测试项目.我不确定的一件事是绑定的位置.我应该在类库中加入它还是应该从调用应用程序中执行此操作?
c# dependency-injection inversion-of-control unity-container
我TransactionScope在C#中长期运行.我告诉范围它应该有很长的时间跨度,但我仍然会超时.什么可能导致这个?
TransactionOptions transactionOptions = new TransactionOptions();
transactionOptions.IsolationLevel = IsolationLevel.ReadCommitted;
transactionOptions.Timeout = TimeSpan.MaxValue;
using (var ts = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
DoLongCode();
}
Run Code Online (Sandbox Code Playgroud) 我构建了一个事务性的MSMQ WCF服务.我在我的操作中使用了以下属性:
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
Run Code Online (Sandbox Code Playgroud)
我在服务中使用Nhibernate.使用Nhibernate我在会话中提交.如果我禁用Nhibernate提交,则会正确处理消息并从队列中删除.通过此提交,Nhibernate事务正确,但我的消息进入重试队列.
这是我进入Nhibernate服务跟踪的例外.
Description Handling an exception. Exception details: System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Transaction'.
at System.Transactions.Transaction.DependentClone(DependentCloneOption cloneOption)
at System.Transactions.TransactionScope.SetCurrent(Transaction newCurrent)
at System.Transactions.TransactionScope.PushScope()
at System.Transactions.TransactionScope.Initialize(Transaction transactionToUse, TimeSpan scopeTimeout, Boolean interopModeSpecified)
at System.Transactions.TransactionScope..ctor(Transaction transactionToUse, TransactionScopeAsyncFlowOption asyncFlowOption)
at System.Transactions.TransactionScope..ctor(Transaction transactionToUse)
at NHibernate.Transaction.AdoNetWithDistributedTransactionFactory.DistributedTransactionContext.System.Transactions.IEnlistmentNotification.Prepare(PreparingEnlistment preparingEnlistment)
--- End of inner exception stack trace ---
at System.Transactions.TransactionStatePromotedAborted.PromotedTransactionOutcome(InternalTransaction tx)
at System.Transactions.TransactionStatePromotedEnded.EndCommit(InternalTransaction tx)
at System.Transactions.CommittableTransaction.Commit()
at System.ServiceModel.Dispatcher.TransactionInstanceContextFacet.Complete(Transaction transaction, Exception error)
Run Code Online (Sandbox Code Playgroud)
似乎nhibernate提交破坏了WCF上的事务.我找不到解决这个问题的方法.
任何帮助可能会受到赞赏
目前我们使用SVN进行源代码控制.由于开发环境中的额外功能和集成,我们希望迁移到TFS 2012.
我们有很多在asp.net中运行的门户网站.在我们的门户网站中,我们使用了许多标准组件.目前,所有门户网站都使用相同的代码库.这意味着每当我们在共享代码库中更改某些内容时(无论何时发布门户)都会自动分发.我们非常习惯这种工作方式,我们知道在其他门户网站中存在破坏代码的风险.但是,在所有其他门户网站上发布更改会花费很多时间.所以为了做到这一点,我们在SVN中使用外部.
我真的想保持这个功能的正常运行.所以我的问题是,有没有办法在SVN中创建一个类似外部的系统,或者是否有一种非常好的方式可以有效地替换这个功能.
我刚接触git并测试它.在我的本地机器上,我经常提交.我希望每隔一段时间将代码推送到一个中央仓库.此刻我发布了所有提交的提交.当我独自工作时,这不是一个大问题,但当我在一个项目中使用多个开发人员时,这会变得混乱.同时我想在我的本地机器上保留所有本地提交,以防万一.
这是使用git的好方法吗?这可能吗?或者我在想错路?
我们正在创建一个angularjs应用程序的Web.Api应用程序.Web.Api返回json结果.
第一步是获取数据:
public List<DataItem>> GetData()
{
return Mapper.Map<List<DataItem>>(dataRepository.GetData());
}
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力.然后我们使数据repo异步,我们改为代码以使用它.
public List<DataItem>> GetData()
{
return Mapper.Map<List<DataItem>>(dataRepository.GetDataAsync().Result);
}
Run Code Online (Sandbox Code Playgroud)
Stil没问题.现在我们想让我的Web.Api完全异步,因此我们将其更改为:
public async Task<List<DataItem>> GetData()
{
return await Mapper.Map<Task<List<DataItem>>>(dataRepository.GetDataAsync());
}
Run Code Online (Sandbox Code Playgroud)
此时Automapper感到困惑.首先,我们有以下映射器规则:Mapper.CreateMap();
这一直有效,直到web api方法变为完全异步.例外情况说它错过了一张地图
Task<ICollection<Data>> to Task<ICollection<DataItem>>.
Run Code Online (Sandbox Code Playgroud)
映射器已更改为
Mapper.CreateMap<Task<List<Data>>, Task<List<DataItem>>>();
Run Code Online (Sandbox Code Playgroud)
验证配置时,它会抱怨无法映射Result.我们应该如何配置映射?
我正在构建一个新的MVC应用程序.通常我总是有一个如下所示的项目结构:
我的问题是,我总是最终得到一个用户管理的混乱实现.我使用了会员提供者,因此使这部分不那么好.现在我看到了新的Identity实现,我真的很喜欢它.我做了一些热点搜索,将它抽象到后端,但没有结果.
我发现这篇关于构建项目的帖子,但它没有给出真正的答案:解耦ASP.NET MVC 5 Identity以允许实现分层应用程序
我希望有人可以向我提供一些提示或技术文档如何抽象所有登录和身份验证到后端层.
在我的应用程序中,我希望客户在不更改特定形式的值时不按提交.我可以在服务器端执行此操作并将viewmodelerror添加到modelstate.但有没有办法做到这一点也客户端与JavaScript?我搜索了它,但找不到它.
我正在尝试使用 signalR 构建应用程序。申请大纲将是:
我正在寻找一组最佳实践。如果我在初始加载后订阅更新,则存在丢失更新的风险。在初始加载和订阅之间可能有更新和我会错过的更新。
其次,我可以使用某种对象状态 ID,然后首先订阅更新流,检索数据,然后在对象落后时应用更新。这将需要相当多的代码。
是否有任何最佳做法来处理这个问题?
我使用resharper工作,当我清理代码时,我得到了这个布局:
mock.Setup(m => m.Products).Returns(new List<Product>{new Product{Name = "Football", Price = 25}, new Product{Name = "Surf board", Price = 179}, new Product{Name = "Running Shoes", Price = 95}}.AsQueryable());
Run Code Online (Sandbox Code Playgroud)
我宁愿:
mock.Setup(m => m.Products).Returns(new List<Product>{
new Product{Name = "Football", Price = 25},
new Product{Name = "Surf board", Price = 179},
new Product{Name = "Running Shoes", Price = 95}
}.AsQueryable());
Run Code Online (Sandbox Code Playgroud)
这可能吗?
c# ×8
asp.net-mvc ×2
javascript ×2
transactions ×2
async-await ×1
automapper ×1
forms ×1
git ×1
msmq ×1
nhibernate ×1
push ×1
resharper ×1
signalr ×1
svn ×1
tfs2012 ×1
wcf ×1