小编Den*_*nis的帖子

使用HttpClient将字节数组发布到Web API服务器

我想将此数据发布到Web API服务器:

public sealed class SomePostRequest
{
    public int Id { get; set; }
    public byte[] Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

将此代码用于服务器:

[Route("Incoming")]
[ValidateModel]
public async Task<IHttpActionResult> PostIncomingData(SomePostRequest requestData)
{
    // POST logic here
}
Run Code Online (Sandbox Code Playgroud)

这个 - 对于客户:

var client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:25001/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));

var content = new FormUrlEncodedContent(new Dictionary<string, string>
{
    { "id", "1" },
    { "content", "123" }
});

var result = await client.PostAsync("api/SomeData/Incoming", content);
result.EnsureSuccessStatusCode();
Run Code Online (Sandbox Code Playgroud)

一切正常(至少,调试器在断点处停止PostIncomingData).

由于有一个 …

c# asp.net-web-api dotnet-httpclient asp.net-web-api2

26
推荐指数
3
解决办法
5万
查看次数

如何从命令行运行Roslyn而不是csc.exe?

安装VS 2015后,从命令行运行csc.exe会导致此消息显示到控制台:

此编译器作为Microsoft(R).NET Framework的一部分提供,但仅支持C#5以外的语言版本,而C#5不再是最新版本.对于支持较新版本的C#编程语言的编译器,请参阅 http://go.microsoft.com/fwlink/?LinkID=533240

该链接重定向到GitHub上的Roslyn存储库.
那么,是从命令行运行"支持更新版本的编译器"(Roslyn)的方法吗?

c# roslyn visual-studio-2015 .net-4.6

19
推荐指数
2
解决办法
6070
查看次数

WiX设置:添加对Visual Studio项目输出问题的引用

我正在尝试学习WiX,现在正在使用Visual Studio的WiX安装项目模板创建示例安装项目.

我有三个项目的解决方案:

  • .net类库;
  • .net应用程序,它使用类库;
  • WiX安装项目.

当然,我想将我的前两个项目的输出添加为WiX设置的组件.

如此此处所述(并且据我所知),在WiX项目中添加引用并将其设置HarvestTrue自动为项目输出添加组件.

现在,我想在一些Feature描述中引用这个组件.

问题:

  • 什么IdComponentRef我应该使用?
  • 这是引用VS项目输出的正确方法吗?

我正在使用VS 2010和WiX 3.6 RC.

wix visual-studio-2010 wix3.6

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

隐式类型数组:为什么我们不能显式设置数组大小?

C#语言规范(7.6.10.4)说,有树种类的数组创建表达式:

new non-array-type [expression-list] rank-specifiersopt array-initializeropt
new array-type array-initializer
new rank-specifier array-initializer

第三个用于隐式类型化数组:

var foo = new[] { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

问题:在隐式类型化数组的情况下,是否有任何重要理由禁止显式设置数组大小?

与此语法相比,它看起来像不对称行为:

var foo = new int[3] { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

更新.

一点澄清.我可以看到显式设置数组大小和数组初始化程序组合的唯一优势是初始化程序长度的编译时检查.如果我声明了三个ints 的数组,初始化器必须包含三个ints.

我认为,隐式类型数组也有同样的优势.当然,使用这种优势或不使用是个人偏好.

c#

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

EF代码优先迁移:没有NUGET的MigrateDatabaseToLatestVersion

我需要帮助来阐明EF Code First Migrations如何在生产机器上运行.我有一些实体类和DbContext派生类来访问实体.现在,我想执行以下几项操作:

  • 当我的应用程序启动时,它必须创建数据库,如果数据库不存在;
  • 那么数据库模式必须调整到模型;
  • 如果刚刚创建了数据库,我想创建一些索引;
  • 另外,如果刚刚创建了数据库,它必须由一些初始数据播种;
  • 所有这些都必须自动执行,不需要任何NUGET命令或外部工具.

我已经阅读了一些有关迁移的文章,但它们主要关注NUGET的使用或运行时的纯自动数据库更新(通过MigrateDatabaseToLatestVersion).我知道关于DbMigration课程,但我无法理解,如何将MigrateDatabaseToLatestVersion策略粘合在一起DbMigration.

UPDATE.
事实上,我不能在项目中使用NUGET,我需要"手动"进行迁移.

c# entity-framework ef-code-first ef-migrations

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

如何枚举控件的所有依赖属性?

我有一些WPF控件.例如,TextBox.如何枚举该控件的所有依赖属性(如XAML编辑器那样)?

wpf dependency-properties

11
推荐指数
3
解决办法
6028
查看次数

条件编译取决于编译器版本

我正在寻找一种方法来实现这样的事情:

#if CSHARP_COMPILER_IS_FOR_CSHARP_6_OR_HIGHER
    foo?.Bar();
#else
    if (foo != null)
    {
        foo.Bar();
    }
#endif
Run Code Online (Sandbox Code Playgroud)

当然,我可以自己定义一个条件编译符号,但它不适合.

有内置常量吗?
我发现的问题相当陈旧.也许,事情变得最好了?

c# c#-6.0

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

WinForms应用程序中的异常处理行为,它使用模式对话框

我遇到过这样的情况.WinForms应用程序有两种形式.主窗体有一个按钮,当用户点击它时,会显示模态对话框.对话框表单也有一个按钮,当用户点击它时,抛出异常.

当应用程序在调试器下运行并运行时,异常处理会有所不同.这是最小的代码,重现这种行为:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            using (var dialog = new Form2())
            {
                dialog.ShowDialog();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Oops! " + ex.Message);
        }
    }
}

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

调试时,引发异常会关闭对话框,Form1.button1_Click中的异常处理程序会处理异常.

在运行应用程序本身时,引发异常不会关闭对话框.而不是这样,默认调用Application.ThreadException处理程序.

为什么(以及为什么)行为有所不同?如何使它相互一致?

c# exception-handling winforms

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

在投影中对嵌套集合进行排序:无法将"SortOp"类型的对象强制转换为"ProjectOp"类型

我正在使用查询结果投影到自定义类型,它不是实体数据模型的一部分:

public sealed class AlgoVersionCacheItem : NotificationObject
{
    public int OrderId { get; set; }
    public string OrderTitle { get; set; }
    public int? CurrentVersion { get; set; }
    public int CachedVersion { get; set; }
    public IEnumerable<int> AvailableVersions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想AvailableVersions按降序排序.因此,我试图AvailableVersions在投影中添加排序:

        return someQueryable
            .Select(version => new AlgoVersionCacheItem
            {
                OrderId = version.OrderId,
                OrderTitle = version.Order.Title,
                CurrentVersion = version.Order.CurrentAlgoVersionId,
                CachedVersion = version.Id,
                AvailableVersions = version
                    .Order
                    .AlgoVersions
                    .Where(v => (allowUncommittedVersions || v.Statuses.Any(s => s.AlgoVersionStatusListItemId …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-6

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

计划任务限制(或如何实现任务持久性)?

我已经开始阅读Hangfire文档,但没有发现任务限制.

如声明的那样,任务(或作业)存储在某处.

因为他们只是代表,所以唯一可以存储,据我所知,是一个代表"身体"(IL?).但是可能存在闭包,它为任务提供了一些上下文,例如,一些外部服务,可能需要加载额外的程序集来运行它们的代码等.

Hangfire如何处理这个问题?
任务可以包含其正文中的任何说明,还是有任何限制?

c# hangfire

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