我在ApiController类中有以下Web API方法:
public HttpResponseMessage Post([FromBody]byte[] incomingData)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我希望incomingData
成为POST的原始内容.但似乎Web API堆栈尝试使用JSON格式化程序解析传入数据,这会导致客户端上的以下代码失败:
new WebClient().UploadData("http://localhost:15134/api/Foo", new byte[] { 1, 2, 3 });
Run Code Online (Sandbox Code Playgroud)
有一个简单的解决方法吗?
使用LINQ,可以更轻松地解决许多编程问题 - 并且代码更少.
您编写的最佳实际LINQ到对象查询是什么?
(与C#2.0 /命令式方法相比,最佳=简洁和优雅).
有没有人知道是否可以在不使用WMI的情况下获得完整的处理器名称(如控制面板|系统中所示)?我猜你可以做一些非管理的电话.
WMI完成这项工作,但我发现它在某些计算机上间歇性地崩溃或锁定.
有没有人知道如何分配窗口区域(SetWindowRgn
或Control.Region
在WinForms中)而不杀死非客户区域中的主题?
例如,运行以下命令会生成Windows 2000样式的未标题标题栏,边框等:
var form = new Form { Width=500, Height=500, BackColor = Color.Azure };
form.Text = "But soft, what light through yonder window breaks?";
var region = new Region (new Rectangle (Point.Empty, form.Size));
region.Exclude (new Rectangle (100, 100, 300, 300));
form.Region = region;
form.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
我猜这与MSDN这篇文章有关,它说:
只要窗口应用了非NULL区域(SetWindowRgn),UxTheme管理器就会假定这是一个专用窗口,窗口不会使用视觉样式.
...因此UxThemes认为它是一个专门的窗口.有没有办法告诉UxTheme经理明确主题窗口?
如何将 .snk 文件(用于强名称签名 .NET 程序集)转换为适用于相同目的的受密码保护的 .pfx 文件?
编辑:澄清一下,假设我在 VS 和项目属性中创建一个项目,签名,单击“新的强名称密钥文件”,并选择不使用密码保护密钥文件:
现在想象一下,一年后我改变主意并想要添加密码 - 不会通过创建新密钥对来破坏程序集的身份。我该怎么做呢?
有没有人可以阻止当前线程的IPrincipal在应用程序域边界上传播?我无法控制分配给该线程的IPrincipal,但我确实可以控制创建应用程序域.
(我想这样做的原因是为了防止在主体对象类型的程序集在其他域中不可用时发生序列化错误.)
编辑:ExecutionContext.SuppressFlow
看起来很有希望,但它似乎没有实现目标.以下打印"MyIdentity":
static void Main ()
{
ExecutionContext.SuppressFlow ();
Thread.CurrentPrincipal = new GenericPrincipal (new GenericIdentity ("MyIdentity"), "Role".Split ());
AppDomain.CreateDomain ("New domain").DoCallBack (Isolated);
}
static void Isolated ()
{
Console.WriteLine ("Current principal: " + Thread.CurrentPrincipal.Identity.Name); // MyIdentity
}
Run Code Online (Sandbox Code Playgroud) 有没有人知道以编程方式将WPF DataGrid(.NET 4)滚动到最后一行的可靠方法?
我知道ScrollIntoView(Items[Items.Count-1])
,但只有当项目是唯一的时才有用.
例如,考虑以下DataGrid,它显示所有已安装的文化,然后显示所有已安装的文化:
var cultures = System.Globalization.CultureInfo.GetCultures (System.Globalization.CultureTypes.AllCultures);
var timesTwo = cultures.Concat (cultures).ToArray();
var grid = new DataGrid { ItemsSource = timesTwo };
Run Code Online (Sandbox Code Playgroud)
如何以编程方式将此网格滚动到最后一行?
PS使用ScrollIntoView的另一个问题是,如果网格本身位于可滚动容器中(例如,在另一个网格内),则ScrollIntoView不仅会滚动自己的网格,还会滚动外部网格,以便在屏幕上显示所请求的元素.在某些情况下这可能是有益的,但在其他情况下肯定不会.
我使用LINQPad连接到不同的环境,比如说"本地"和"开发".连接设置位于LINQPad.exe的配置文件中.
为了帮助我组织我的设置,我想我会制作一些LINQPad.exe副本,用相应的配置文件重命名它们,如下所示:
但LINQPad.exe在启动时抱怨:
必须将该应用程序命名为LINKPad.exe才能运行.
为什么是这样?
PS显然,我不是在问如何管理我的配置文件(我现在有不同的文件夹) - 我更好奇的是有什么编程原因可以强制执行进程的名称?