小编lar*_*z11的帖子

ASP.NET Core RC2 SignalR Hub上下文请求线程

我目前正在尝试RC2发布,ASP.NET Core我遇到了一个问题SignalR.我需要能够在请求线程之外向客户端发送消息.

现在在完整的.NET框架中,您可以这样做:

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.<SendMessage>()
Run Code Online (Sandbox Code Playgroud)

但在ASP.NETCore中没有GlobalHost.

我发现了一个类似的问题: 如何在vNext项目中获取SignalR Hub上下文?

第二个答案提供了一种在请求线程之外获取hubcontext的方法,但这也不起作用ASP.NET Core.

所以我的问题是:如何在ASP.NET Core中的请求范围之外获取集线器上下文?

asp.net signalr asp.net-core asp.net-core-1.0 .net-core-rc2

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

ASP.NET Core HTTPRequestMessage返回奇怪的JSON消息

我目前正在使用ASP.NET Core RC2,我遇到了一些奇怪的结果.所以我有一个MVC控制器,具有以下功能:

public HttpResponseMessage Tunnel() {
    var message = new HttpResponseMessage(HttpStatusCode.OK);
    message.Content = new StringContent("blablabla", Encoding.UTF8);
    message.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/plain");
    message.Headers.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue {
        NoCache = true
    };

    return message;
}
Run Code Online (Sandbox Code Playgroud)

如果我用邮递员调用此方法并将Accept标头设置为text plain,我会收到以下回复:

{
  "Version": {
    "Major": 1,
    "Minor": 1,
    "Build": -1,
    "Revision": -1,
    "MajorRevision": -1,
    "MinorRevision": -1
  },
  "Content": {
    "Headers": [
      {
        "Key": "Content-Type",
        "Value": [
          "text/plain"
        ]
      }
    ]
  },
  "StatusCode": 200,
  "ReasonPhrase": "OK",
  "Headers": [
    {
      "Key": "Cache-Control",
      "Value": [
        "no-cache"
      ]
    }
  ], …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core-mvc asp.net-core .net-core-rc2

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

Enum.Parse返回意外成员

考虑以下代码:

namespace ConsoleApplication1 {
class Program {
    public static void Main (string[] args) {
        var en = (TestEnum)Enum.Parse(typeof(TestEnum), "AA");
        Console.WriteLine(en.ToString());
        Console.ReadKey();
    }
}

public enum TestEnum {
    AA = 0x01,
    AB = 0x02, 
    AC = 0x03,
    BA = 0x01,
    BB = 0x02,
    BC = 0x03
}
}
Run Code Online (Sandbox Code Playgroud)

如果执行此操作,变量en将获得值TestEnum.BA.现在我从中学到了枚举标志应该是唯一的,或者你得到这些意想不到的东西,但我确实不明白这里发生了什么.

更奇怪的部分是,当我将[Flags]属性添加到TestEnum时,它解决了问题并返回TestEnum.AA而不是TestEnum.BA,但对于原始枚举(更大,约200个成员)我发现这个问题这没有什么区别.

我的理解是枚举是一种值类型,所以当你定义自己的标志时,它会将内存中的值存储为0x01(对于TestEnum.AA),当你将它从对象转换为TestEnum时,它将执行查找那个标志值并找到TestEnum.BA.

运行以下行也可以确认这一点:

var en = (TestEnum)(object)TestEnum.AA;
Console.WriteLine(en.ToString());
Run Code Online (Sandbox Code Playgroud)

哪个会输出: BA

所以我的问题是:这到底发生了什么?更重要的是,为什么添加Flags属性会有所不同?

c#

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

在实体框架核心中仅包含相关实体的 ID

我目前正在使用 ASP.NET Core 和实体框架核心开发 API,并使用 npgsql 作为数据库提供程序。我有两个实体,它们是一对多的关系。问题是我只想在“父控制器”返回的 JSON 结果中包含子实体的 Id。

这些是我的实体:

public class Meal {
    public int Id { get; set; }

    public string Title { get; set; }
    public string Description { get; set; }

    public string UserId { get; set; }
    public User User { get; set; }

    public List<Picture> Pictures { get; set; }

    public Meal () {
        this.Pictures = new List<Pictures>();
    }
}

public class Picture {
    public int Id { get; set; }

    public int …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

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