我目前正在尝试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 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) 考虑以下代码:
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属性会有所不同?
我目前正在使用 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)