小编Bra*_*non的帖子

具有HTTP头的DataService中的HttpContext与OperationContext

我有一个覆盖的WCF DataService(v5.2)OnStartProcessingRequest(ProcessRequestArgs args).我想在响应中添加一些标题(在这种方法中我假设它是正确的位置?).我第一次尝试这个:

args.OperationContext.ResponseHeaders.Add(...)
Run Code Online (Sandbox Code Playgroud)

那没用.然后我尝试了这个:

OperationContext.Current.OutgoingMessageHeaders.Add(...)
Run Code Online (Sandbox Code Playgroud)

那没用.我尝试在那个吸盘上添加一个新的OperationContextScope.它仍然失败了.最后我尝试了这个:

HttpContext.Current.Response.AddHeader(...);
Run Code Online (Sandbox Code Playgroud)

那个选项有效!(通过"工作"我的意思是它实际上出现在对客户的响应中.)为什么前两个选项不起作用?

在网上进一步阅读后,我发现了这一点

WebOperationContext.Current.OutgoingResponse.Headers.Add(...)
Run Code Online (Sandbox Code Playgroud)

也有效.为什么我们在这个方法中有四个当前的上下文?一个人如何知道使用哪一个(在运行时)?哪些在我的[WebGet]方法中有效?哪些在我的[QueryInterceptor]方法中有效?哪个上下文保证有正确的请求标头?(我现在一直在使用args.OperationContext.)

c# http-headers wcf-data-services

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

我可以为Protobuf-net设置一个全局对象工厂吗?

我在Protobuf-net上看到了SetFactory方法.但是,它似乎可以按类型提供.(和MethodInfo或字符串?我能听到Func<T>吗?)

我想要的是能够使用我的IoC容器的对象解析和构造能力进行所有反序列化.(我正在使用Autofac.)Protobuf-net应该首先尝试在任何构造上使用我的IoC.如果返回null,那么我想要默认行为.目前有办法做到这一点吗?谢谢你的时间.

c# ioc-container protobuf-net deserialization

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

从.NET生成时从FFMpeg获取错误

当我从命令行运行FFMpeg时,就像这样

ffmpeg.exe -hwaccel auto -re -i "C:\Users\Public\Videos\Sample Videos\Wildlife.wmv" -an -sn -c:v bmp -pix_fmt bgr24 -f rawvideo - > junk.bin
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,当我生成完全相同的东西(减号> junk.bin)时,我会在几秒钟的播放后得到这个令人讨厌的"坏标题"错误.是什么造成的?我很难相信我的进程阻塞管道比文件系统更长,但它应该能够无限制地阻塞管道而不会破坏解码.截断的stderr在下面.我产生这个东西的代码就在这里.

ffmpeg version N-60761-g916a792 Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 19 2014 21:57:22 with gcc 4.8.2 (GCC)
  configuration: --target-os=mingw32 --enable-shared --enable-runtime-cpudetect
  libavutil      52. 65.100 / 52. 65.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  1.103 /  4.  1.103
  libswscale      2. …
Run Code Online (Sandbox Code Playgroud)

.net c# ffmpeg pipe process

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

如何在编译时删除“GLIBC_2.27”要求?

我一直在使用 docker 映像进行 c++ 编译。它基于 Ubuntu 18.04。当我尝试在某些 Ubuntu 16 系统上运行时,我收到以下消息:

/lib/x86_64-linux-gnu/libm.so.6:找不到版本“GLIBC_2.27”

我将在下面发布完整的 ldd 输出。我喜欢使用较新的编译器。我宁愿不使用较旧的 Linux 基础映像进行编译(但如果有必要我会这样做)。我静态链接了大多数库,但我还没有静态链接 glibc。许多网络资源建议不要这样做。有什么方法可以告诉我的新编译器(gcc 7.3)不需要新的 glibc?ldd -v 输出:

    linux-vdso.so.1 (0x00007ffd167cf000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007eff77399000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007eff77191000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007eff76df3000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007eff76bdb000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff767ea000)
    /lib64/ld-linux-x86-64.so.2 (0x00007eff79f90000)

    Version information:
    lbrycrd-linux (4)/lbrycrdd:
        ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
        librt.so.1 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/librt.so.1
        libm.so.6 (GLIBC_2.27) => /lib/x86_64-linux-gnu/libm.so.6
        libm.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libm.so.6
        libgcc_s.so.1 (GCC_3.3) => /lib/x86_64-linux-gnu/libgcc_s.so.1
        libgcc_s.so.1 (GCC_3.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
        libgcc_s.so.1 (GCC_4.2.0) => /lib/x86_64-linux-gnu/libgcc_s.so.1
        libpthread.so.0 (GLIBC_2.3.4) => …
Run Code Online (Sandbox Code Playgroud)

gcc glibc dynamic-linking ldd

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

WinRT相当于这些.Net文化方法?

这些来自.NET框架的WinRT等价物是什么?

CultureInfo.CurrentCulture.LCID
Encoding.GetEncoding(int codePage)
Encoding.CodePage
Run Code Online (Sandbox Code Playgroud)

.net c# currentculture windows-runtime

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

简单的 WPF 平移;这段代码很接近但不太正确

我正在尝试使用其 RenderTransform 对 WPF Canvas 对象执行一些简单的平移。我希望能够按住鼠标按钮并拖动。使用以下代码,单击时会出现奇怪的跳跃。是什么原因造成的?其次,由于缺乏更好的术语,拖动被拖动的对象是“不稳定的”。这是为什么?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace TestWpfZoom
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private Point _last;
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            CaptureMouse();
            _last = e.GetPosition(canvas);
            base.OnMouseLeftButtonDown(e);
        }

        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        {
            ReleaseMouseCapture(); …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml canvas panning

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

在Signalr 2.0自主机中使用依赖注入?

在自托管应用程序中使用SignalR 2.0,根据这些说明,您可以这样:

class Startup
{
   public void Configuration(IAppBuilder app)
   {
       app.MapSignalR(new HubConfiguration { Resolver = ... });
   }
}
class Program
{
    static void Main(string[] args)
    {
        using (WebApp.Start("http://localhost:8080")) // constructs Startup instance internally
        {
            Console.WriteLine("Server running on {0}", url);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您会注意到Startup类实例是使用一些幕后魔术创建的.我无法弄清楚如何填写依赖关系.有没有办法覆盖Startup类的构造,以便我可以注入依赖项?

c# asp.net dependency-injection self-hosting signalr

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

仅运行当前任务和最近排队的任务

我有一些方法.我们称之为"TurnOn"和"TurnOff".每个都返回一个未启动的任务(如在System.Threading.Tasks.Task中).一旦启动,该任务大约需要一秒钟才能完成.我有一些代码与Task.ContinueWith方法(示出排队这些这里).问题是我只想要当前正在运行的任务(如果有的话)加上最近请求的任务来运行.目前,如果我的用户在一秒内切换开/关开关十次,我的代码需要花费二十秒来赶上.这只是我关心的最终要求.我怎样才能做到这一点?我无法在ContinueWith方法中看到一种方法来知道它之后是否还有另一个ContinueWith方法.我一直在看这里的例子,但不太清楚如何应用它.

更新:现在可以在库中找到它:https://github.com/BrannonKing/Kts.ActorsLite.它被命名为"MostRecent ......"

.net c# multithreading task-parallel-library

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

确定实例是否覆盖了 GetHashCode 和 Equals?

给定 C# 中对象的实例,如何确定该对象是否具有值语义?换句话说,我想保证我的 API 中使用的对象适合用作字典键。我在想这样的事情:

var type = instance.GetType();
var d1 = FormatterServices.GetUninitializedObject(type);
var d2 = FormatterServices.GetUninitializedObject(type);
Assert.AreEqual(d1.GetHashCode(), d2.GetHashCode());
Run Code Online (Sandbox Code Playgroud)

你怎么看这种方法?

.net c# equality

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

b2命令在直接调用时查找ICU,但不从间接bash脚本变量中查找

我的bash脚本有这个奇怪的问题.我编译boost作为其中的一部分.脚本调用如下所示:

./b2 --reconfigure ${PARALLEL} link=static cxxflags=-fPIC install boost.locale.iconv=off boost.locale.posix=off -sICU_PATH="${ICU_PREFIX}" -sICU_LINK="${BOOST_ICU_LIBS}" >> "${BOOST_LOG}" 2>&1
Run Code Online (Sandbox Code Playgroud)

该命令非常有效.日志文件显示它发现ICU没有问题.但是,如果我将其更改为从变量运行,它将不再找到ICU(但它仍会编译其他所有内容):

bcmd="./b2 --reconfigure ${PARALLEL} link=static cxxflags=-fPIC install boost.locale.iconv=off boost.locale.posix=off -sICU_PATH=\"${ICU_PREFIX}\" -sICU_LINK=\"${BOOST_ICU_LIBS}\""
$bcmd >> "${BOOST_LOG}" 2>&1
Run Code Online (Sandbox Code Playgroud)

有什么不同?我希望能够使用第二种方法,以便我可以在运行之前将命令传递给另一个函数.

bash boost compilation

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