小编Jam*_*rld的帖子

使用单例ASMX Web服务代理是否可以?

我正在使用ASMX Web服务使用.NET 3.5编写的一些<gulp> 遗留代码.

Windows服务(称为FooService)静态缓存ASMX代理,用于Web服务(称为BarWS),它响应客户端请求每小时大约10-30次.

作为<gulp> 遗留代码,由于各种原因难以测试.我正在打破依赖关系以使其可测试,这个静态引用让我感到疑惑.自从我使用ASMX以来已经多年了,我记得代理是线程安全的 - 但我想知道它是否会变得不可用,就像单例/共享WCF代理在开发问题并出现故障时一样.

鉴于这个代理的使用很少(BarWS被称为少于30次/小时),我认为在每次调用时创建一个新的代理会更安全 - 但我只是想知道我是否会做出不必要的改变.谁知道?

PS我知道WCF更好,但是现在在这个<gulp>遗留代码库中迁移到WCF的变化太大了.

c# web-services asmx

5
推荐指数
1
解决办法
1209
查看次数

如何从请求中获取sessionId?

我用express来支持我的会话管理:

app.use(express.cookieParser('your secret here'));
app.use(express.session({secret: 'mysecretcode'}));
Run Code Online (Sandbox Code Playgroud)

我从请求中提取并保存sessionId的内容.但是,我从req.sessionID获得的id与cookie中发送的id不同:

req.sessionID --> 'E7oSoKmQfcMKnk5_jA5tF5vR'
cookie.connect.sid --> 's%3AE7oSoKmQfcMKnk5_jA5tF5vR.DQnYdDDcFn8K2JJHMgWL5DTzNYYwIU3DA5a10WImA7U';
Run Code Online (Sandbox Code Playgroud)
  1. 为什么这两个是不同的?
  2. 如何在发送响应之前获取connect.sid?

cookies session node.js express

5
推荐指数
1
解决办法
6827
查看次数

如何在不符合标准.NET事件模式的情况下将事件转换为IObservable

我有一个看起来像这样的代表:

public delegate void MyDelegate(int arg1, int arg2);
Run Code Online (Sandbox Code Playgroud)

一个看起来像这样的事件:

public event MyDelegate SomethingHappened;
Run Code Online (Sandbox Code Playgroud)

是否有一些简单的方法为此事件创建IObservable序列?我想做这样的事情(但它不会编译):

var obs = Observable.FromEventPattern<int, int>(this, "SomethingHappened");
var subscription = obs.Subscribe(x,y => DoSomething(x, y));
Run Code Online (Sandbox Code Playgroud)

....

private void DoSomething(int value1, int value2)
{
...
}
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

5
推荐指数
1
解决办法
148
查看次数

在 Autofac 中,如何用装饰器替换默认注册?

我在 Autofac(v4.4.0,.NET 4.6.1)中遇到了一些意想不到的行为,我觉得这可能是一个错误。

文档

默认注册

如果多个组件公开相同的服务,Autofac 将使用最后注册的组件作为该服务的默认提供者

例如,如果我这样做:

    builder.RegisterType<FooOne>().As<IFoo>();
    // Next line replaces default IFoo implementation
    builder.RegisterType<FooTwo>().As<IFoo>();
Run Code Online (Sandbox Code Playgroud)

我期望(并获得)FooTwoIFoo从容器解析的实例。

但是,如果我已经注册了IFoo,并且我使用该RegisterDecorator<T>函数注册了 的装饰器IFoo,则它不会替换 的默认注册IFoo。例如:

    // Register FooOne directly
    builder.RegisterType<FooOne>().As<IFoo>(); // (1)
    // Now set up a decorator
    builder.RegisterType<FooOne>().Named<IFoo>("foo");
    builder.RegisterDecorator<IFoo>((c, inner) =>
      new DecoratorFoo(inner), fromKey: "foo");
Run Code Online (Sandbox Code Playgroud)

将解析IFoo未修饰的 FooOne. 这让我感觉不一致;违反了最小惊讶原则

您可能会声称我根本不应该使用第 (1) 行(如果没有它,代码也能正常工作)——但使用插件来替换注册是一种公认​​的习惯用法(例如此处)。

在我的例子中,这个错误在一个相当大的代码库中表现出来,其中包装类型已经通过约定注册,现在需要进行装饰,需要重新考虑如何完成注册。

适合LINQPad演示该问题,要旨是在这里

我缺少的观察到的行为是否有任何设计原因?有没有办法让装饰器注册替换默认值?

c# autofac

5
推荐指数
1
解决办法
1420
查看次数

在 Azure API 管理中,当不需要订阅时,如何解决 API 的产品级策略?

我在 Azure API 管理中有以下设置:

两种产品:InternalStarter

一个 api: Finance,即包含在上述两个产品中。该FinanceAPI也有Subscription required复选框清除,因此不需要订阅。

Internal产品具有执行 JWT 验证的策略。该Starter产品没有。

在 API 的测试选项卡中,我可以通过Apply Product Scope下拉菜单选择产品范围。据推测,这决定了应用哪些产品策略。

在调用 API 时,如果我没有提供有效的令牌,JWT 验证就会启动并拒绝我的请求。但是,由于我没有用于标识产品的订阅密钥,它可能是 theInternalStarterproduct - 系统如何确定它应该应用Internal包含 jwt-validation 规则的Starter策略而不是不应用的策略?

azure-api-management

4
推荐指数
1
解决办法
1141
查看次数

BehaviorSubject.First()已经过时,有什么替代方案?

所以我有一个BehaviorSubject<string>我希望用于房产的.我一直在使用阻塞First()方法来获取BehaviorSubject属性getter中保持的当前值.

First()操作现在已经过时,那么实现这一目标的新方法是什么?

.net system.reactive

3
推荐指数
2
解决办法
1386
查看次数

获得第二高的薪水,如果没有第二高的薪水则返回null

如果满足
以下条件,则必须返回Null:-表中少于2行
-没有第二高的工资,因为每个人的工资都相同

我查找的所有内容似乎都针对旧版本的Sql Server

DECLARE @find int = (Select COUNT(*) from Employee);

IF (@find = 1)
    select null as 'SecondHighest'
else
    select Salary as 'SecondHighest' 
    from Employee
    order by Salary desc
    offset 1 rows fetch next 1 rows only;
Run Code Online (Sandbox Code Playgroud)

如果少于2列,我设法返回null,尽管我认为可能有更好的方法。但是,我无法解决第二个问题:
“没有第二高的薪水,因为每个人的薪水都相同”

sql t-sql sql-server

3
推荐指数
2
解决办法
565
查看次数

Observable.Delay或Observable.Buffer重用相同的线程

是否有某些版本的Observable.Delay或Observable.Buffer不为其计时器使用新线程?也许精度较低..

我有一个场景,我需要在一个observable上调用Observable.Delay,每秒产生几千条消息,这会产生很多线程.

谢谢.

c# system.reactive

2
推荐指数
1
解决办法
617
查看次数

IScheduler.Schedule vs IScheduler.ScheduleAsync?

IScheduler接口提供

public static IDisposable Schedule(this IScheduler scheduler, Action action)
Run Code Online (Sandbox Code Playgroud)

public static IDisposable ScheduleAsync(this IScheduler scheduler, Func<IScheduler, CancellationToken, System.Threading.Tasks.Task<IDisposable>> action)
Run Code Online (Sandbox Code Playgroud)

ScheduleAsync的方法说明:

    // Summary:
    //     Schedules work using an asynchronous method, allowing for cooperative scheduling
    //     in an imperative coding style.
    //
    // Parameters:
    //   scheduler:
    //     Scheduler to schedule work on.
    //
    //   action:
    //     Asynchronous method to run the work, using Yield and Sleep operations for
    //     cooperative scheduling and injection of cancellation points.
    //
    // Returns:
    //     Disposable …
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

1
推荐指数
1
解决办法
2932
查看次数