是否可以存储Kerberos票证以便以后使用它来模拟用户?
我有一个场景,用户直接调用外部系统来处理一些数据.外部系统依赖于在AD中正确模拟/验证用户.
现在,调用系统必须进行更改,以便队列位于用户和外部系统之间,并且队列中的工作由Windows服务从该队列移交给外部系统.此服务需要模拟用户,以便外部系统正确处理用户权限.
鉴于我无法更改外部系统并且无法在队列中存储用户名和密码,我可以在用户将新工作项添加到队列时保存Kerberos票证,然后在服务交换时模拟用户数据到外部系统.我怎么会在C#中做到这一点?
我通过basicHttpBinding在数据库上执行多个操作来公开WCF服务.
我想保证,如果客户端没有收到回复,则回滚数据库操作(没有任何事务流通过WCF).例如,客户端调用在服务器上执行但在完成之前客户端崩溃的"DoX"方法.一旦无法将回复发送到客户端,就应该回滚数据库操作.
有没有办法做到这一点?[OperationBehavior(TransactionScopeRequired=true)]属性是否会以这种方式工作?是否有可能处理服务器端的通信错误?
更新1:
似乎[OperationBehavior(TransactionScopeRequired=true)]在将回复发送到客户端之前提交事务,因此如果客户端没有收到回复,则不能用于执行回滚.
更新2: 要再次明确说明,我不需要事务以任何方式与客户端进行交互.客户端既不知道事务,也不能取消或提交事务,任何事务都不应该通过绑定.如果传输通道无法将消息传递到接收客户端,那么我希望事务回滚的唯一位置是在服务器端.对于TCP/IP的情况,该信息应该随时可供服务器使用.(没有TCP数据包的ACK发送回客户端)
因此,服务器端的假设执行流程(请注意缺少客户端)应该是:
Receive client request
Start transaction
Execute all logic inside the service operation
Send reply back to client
if (reply.failedToReceive) { transaction.Rollback() } // due to a failing TCP/IP transmission
Run Code Online (Sandbox Code Playgroud) 我有2个单选按钮
我在装载时使用了mootool
window.addEvent('domready', function() {
var chk="1";
if(chk==1){
$('edit-gender-0').set('checked',true);
}
else if(chk==2){
$('edit-gender-1').set('checked',true);
}
Run Code Online (Sandbox Code Playgroud)
但它根本不起作用.
任何帮助将不胜感激......以及没有if条件的任何其他简短解决方案.
NLog 能够通过${callsite:className=Boolean:fileName=Boolean:includeSourcePath=Boolean:methodName=Boolean}:
渲染器包含调用点信息。
我假设 NLog 获取堆栈跟踪来实现此功能。
我想知道是否是这种情况,或者 NLog 的优化是否超出了在每个日志记录调用上创建新的堆栈跟踪的范围,以及在写入大量日志条目的应用程序中对性能有何影响?
我可以使用以下任一方法:
var alert = new Action<string>((s) => MessageBox.Show(s));
// Or
Action<string> alert = (s) => MessageBox.Show(s);
// Or
Action<string> alert = new Action<string>((s) => MessageBox.Show(s));
Run Code Online (Sandbox Code Playgroud)
从C#编译器生成的代码的角度来看,它们之间有什么区别吗?或者只是品味问题?
.net ×3
c# ×2
delegates ×1
javascript ×1
kerberos ×1
lambda ×1
mootools ×1
nlog ×1
performance ×1
syntax ×1
transactions ×1
wcf ×1