小编Eil*_*aee的帖子

我可以在WebAPI messageHandler中使用Autofac DI吗?

我成功地在我的ASP.NET WebAPI项目中连接了Autofac,现在我想知道如何在我的MessageHandlers中解析服务.

由于必须在应用程序启动时添加MessageHandler,因此很明显我无法在请求生命周期范围内解析它们.这里没问题.

但是,我想找到一种方法来获取MessageHandler的SendAsync方法执行期间的当前请求生命周期范围,以便能够(例如)执行令牌验证,登录存储库等...

我该怎么办?

autofac asp.net-web-api

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

async关键字和TaskScheduler的选择

我想知道编译器在使用async关键字进行编译时选择TaskScheduler的方式背后的原因.

我的测试方法由OnConnectedAsync方法上的SignalR(ASP.NET主机,IIS8,websocket传输)调用.

protected override async Task OnConnectedAsync(IRequest request, string connectionId)
{
   SendUpdates();
}
Run Code Online (Sandbox Code Playgroud)

在Current同步上下文中启动任务将导致System.Web.AspNetSynchronizationContext.OperationStarted()中的InvalidOperationException

此时无法启动异步操作.异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动.如果在执行页面时发生此异常,请确保标记页面<%@ Page Async="true" %>.

精细.使用此SendUpdates定义,我得到以上异常:

    private async void SendUpdates()
    {
        Task.Run(async () =>
            {
                while (true)
                {
                    await Task.Delay(1000);
                    await Connection.Broadcast("blabla");
                }
            });

    }
Run Code Online (Sandbox Code Playgroud)

但更有趣的是,当我没有得到例外.以下作品:

    private void SendUpdates()
Run Code Online (Sandbox Code Playgroud)

以下也有效

    private async Task SendUpdates()
Run Code Online (Sandbox Code Playgroud)

这最后一个也有效,但它与上面的例子基本相同.

    private Task SendUpdates()
    {
        return Task.Run(async () =>
            {
                while (true)
                {
                    await Task.Delay(1000);
                    await Connection.Broadcast("blabla");
                }
            });

    }
Run Code Online (Sandbox Code Playgroud)

你知道编译器如何选择在这里使用哪个调度程序吗?

c# async-await signalr

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

Silverlight 4 Out of Browser:"无法确定来自Web的Xap文件的URL"

出于某种原因,每当我现在尝试在浏览器外运行我的SL4应用程序时,当我运行它时,我收到以下消息:

"无法从网络确定Xap文件的URL"

是指我的Web项目的旧名称,现在已重命名.我已经浏览了所有项目名称的参考资料,找不到了; 很明显,它从某个地方获得它!

谷歌搜索但没有找到任何东西(除了现在删除的SO问题的链接!).

任何帮助都感激不尽......

silverlight silverlight-oob

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

FluentNHibernate - 自动忽略属性

我有一个基类,包含一个名为IsDirty的属性.这用于域模型,不是数据库表中的列.

使用自动化时,流畅的nhibernate尝试将此列添加到表中.解决这个问题的一种方法是进入.ForTypesThatDeriveFrom<Address>(p => p.IgnoreProperty(x => x.IsDirty))自动化设置.

问题是,我的所有实体都会这样做,有没有办法说明这一点,而不必为每个实体添加这一行?如果我放.ForTypesThatDeriveFrom<Entity>(p => p.IgnoreProperty(x => x.IsDirty)),然后我尝试将实体转换为地址时出错.

我也将实体设置为基本类型.

在此先感谢,JT

fluent-nhibernate

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