是否有推荐的方法在两个应用程序之间共享SignalR集线器?
实际情况是面向公众的WebAPI项目和内部MVC WebApp.我想做的是从WebAPI项目调用SignalR集线器上的方法,并将这些方法的结果推送到通过MVC应用程序连接的客户端.
最好的选择是创建第三个"Hub"项目并让两个项目连接到那个项目吗?如果是这样,如何管理集线器实例?两个应用程序是否可以从不同的应用程序池(以及可能的主机)获取对同一集线器的引用?
我读了一下GlobalHost.ConnectionManager.GetHubContext,这是否足以让两个应用程序都可以使用一个有效的单例集线器?
任何想法都非常感激.
我已经创建了几个具有特定内容标题的部分.
我希望在不同部分上方悬停显示一个简短的预览.
有谁知道如何使用条件渲染反应组件创建hoverActionHandler?
任何人都可以解释以下任何一种方法是否有任何好处:
decimal d = 12.0m;
// 1. how I'd have done it
myLabel.Text = d.ToString();
// 2. how I saw someone do it today
myLabel.Text = String.Format("{0}", d);
Run Code Online (Sandbox Code Playgroud)
只是为了澄清,我不是在质疑这些方法的作用,我显然对此感到高兴,就好像在这个具体的例子中,在一个方面可能有一个性能优势.我知道string.format()提供的文化和格式增加了灵活性,但我总是只是'tostring()'数字来将它们的值附加到标签或一般的基于文本的属性.
对我来说,string.format()选项似乎更多的打字,这里没有额外的好处,但我想知道是否有任何其他'引擎盖'的好处,一种方式与另一种方式.
我在数据库表中有一个VARBINARY(MAX)字段,其中包含~35k个字符.该字段是转换后的Word文档,遗憾的是它不再具有访问权限.
该字段存在于我的开发数据库中,我希望将此值移植到实时数据库.但是,如果我纯粹从SQL格式中选择内容,那么我似乎只能获得~28k的可用字符.
所以我的问题是,将具有太大内容的字段迁移到简单复制并粘贴到插入脚本中的最佳方法是什么?
任何想法都非常感激.
编辑:
作为附加信息,将结果输出到文件(尽管是.txt)似乎比通过网格更少的字符.如果我将查询结果导出到运行查询到网格的文件后,我似乎得到了当时查询窗口中的内容的文字表示(因此,如果我拉伸窗口,我得到的字符多于压缩列宽度时的字符数)
我有一种情况,我有4-5个非常相似的类,我想重新考虑使用抽象基类.这背后的想法是允许每个类可以使用的方法,同时遵守DRY原则.
我遇到的问题是这些类是从EF4生成的实体类,每次我尝试改变我的模型时它似乎都会崩溃.
将基类添加到我的EF模型中并使模型中的现有类继承作为基础的最佳/推荐方法是什么?目前我没有问题添加基类,给它一个ID属性,因为它似乎需要,然后创建继承,但EF然后呻吟关于
'Error 3024: Problem in mapping fragments starting at line 18563:Must specify mapping for all key properties (MyBaseType.ID) of the EntitySet MyBaseType.'
在这种情况下,我不希望将基类型持久化到DB,纯粹用作从其继承的所有类共有的基本方法的容器.感觉我在这里错过了一些简单的东西,但我不能为我的生活看到它.
有关如何以这种方式添加基类的任何想法?或者我应该只是在代码中添加基类并以某种方式绕过模型?
编辑:作为进一步的信息,举例说明有3种类型,MortageApplicationForm,BankAccountApplicationForm和CreditCardApplication表格.它们目前存储在3个不同的表中,具有一组不同的字段.我正在尝试做的是创建一个类似'Form'的基类,它将包含公共字段.
在一个简单的层面上,假设每个表都有一个名为'CreditCardFormID','BankAccountFormID'等的主键ID字段.我想做的是创建一个带有属性'ID'的基础'Form'类,用于案例一个表将映射到'CreditCardFormID'和另一个'BankAccountFormID'.
我很高兴在部分类中执行此映射(因为我不想将'ID'持久保存到DB中)我只是想在代码中使用它,因此我可以为LoadForm(int ID)之类的东西编写泛型方法无需为每个实体类型编写大型开关,或为每个实体类型编写特定方法.
我有一个应用程序,旨在从我们的本地数据库流回视频.昨天我花了很多时间试图将数据返回成功RangeFileContentResult或RangeFileStreamResult不成功.
简而言之,当我将文件作为这两个结果中的任何一个返回时,我似乎无法正确地传输视频(或者根本不播放).
来自浏览器的请求将通过以下标头发送:
Range: bytes=0-
Run Code Online (Sandbox Code Playgroud)
并且提供的响应以这些标头为例:
Accept-Ranges: bytes
Content-Range: bytes 0-5103295/5103296
Run Code Online (Sandbox Code Playgroud)
在网络流量方面,我获得了一系列206的部分结果,然后是200结尾(根据小提琴手),这似乎是正确的.Chrome的网络标签不同意这一点,并看到一个初始请求(总是13个字节,我假设是握手)然后是一些状态为已取消或待处理的请求.据我所知,这或多或少是正确的,206 - 取消,206 - 取消等.但视频永远不会播放.
如果我将结果从我的控制器切换到FileResult,视频播放和Chrome,IE10和Firefox似乎在下载完成之前开始播放(感觉有点像它的流媒体!虽然我怀疑它不是)
但是随着范围的结果,我在chrome或IE中得不到任何东西,整个视频在firefox中下载了一滴.
据我所知,RangeFileContentResult应该处理响应客户端的一系列字节要下载(我的似乎没有,它只是告诉它获取整个文件(由上面的响应说明)).客户应该对此做出回应,而这似乎并没有.
有没有人对这方面有任何想法?特别:
a)应该RangeFileContentResult将一系列字节发送回客户端吗?b)有没有办法可以明确控制客户端请求的字节范围?c)在请求时,是否有任何理由或错误导致浏览器根本不加载视频RangeFileContentResult?
编辑:添加了一个图表,以帮助描述我所看到的:

编辑2:好的,所以情节变浓了.在使用RangedFile gubbins的同时,我们需要推出另一个系统测试版本,并将"RangeFileContentResult"留在我的控制器操作上,如下所示:
private ActionResult RetrieveVideo(MediaItem media)
{
return new RangeFileContentResult(
media.Content,
media.MimeType,
media.Id.ToString(),
DateTime.Now);
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这似乎在我们的Azure系统测试环境中按预期工作,但仍然不在我的本地计算机上.我想知道是否有一些基于IIS的东西在Azures IIS8上运行得很开心,但在我的本地7.5实例上却没有?
我有一个LINQ问题,我想知道是否有人知道答案.
通常,如果我想查找特定字段所订购的记录,例如"最新添加的人",我会写一些类似于:
MyCollection.OrderByDescending(x => x.AddedDate).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
最近我从团队中另一位喜欢写作的开发者那里学到了一些工作:
MyCollection.OrderBy(x => x.AddedDate).LastOrDefault();
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,这是订购降序并选择第一个,更快或更慢,而不是订购另一个方向并选择最后一个?
我的想法是,首先会更快,因为它不需要在返回对象时"尽可能地"迭代集合,但这比其他任何事情都更加预感!
在socket.io中,您可以像这样绑定到套接字事件/通道:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是你怎么不再听"新闻"事件呢?
我有一个带有颜色条图例的 Plotly 图表。
我希望这个值从 0 到 100,每 10 一次设置一次刻度。
无论我如何尝试,图表总是以 10 开始刻度并以 90 结束,从而删除了顶部和底部刻度。
如何确保显示顶部和底部刻度线?
微量元素:
import numpy as np
import plotly.graph_objects as go
x = np.linspace(0, 1, 50)
y = np.linspace(0, 1, 50)
xx, yy = np.meshgrid(x, y)
z = 100*xx*yy
figure = go.Figure()
figure.add_trace(
go.Contour(
z=z.flatten(),
x=xx.flatten(),
y=yy.flatten(),
zmin=0,
zmax=100,
colorbar_tickvals=np.arange(0, 101, 10),
colorbar_tickmode='array',
)
)
figure.update_layout(
template="simple_white",
)
figure.show()
Run Code Online (Sandbox Code Playgroud)
刚刚从thunk转移到sagas我正试图找到最好的方法来调用setTimeout,然后从该函数内调用另一个函数(在这种情况下corewar.step()).这是我原来的代码,正如我所料.
runner = window.setInterval(() => {
for(let i = 0; i < processRate; i++) {
corewar.step()
}
operations += processRate;
}, 1000/60)
Run Code Online (Sandbox Code Playgroud)
这段代码在a里面saga,我相信我应该可以call像在应用程序的其他区域中那样包装函数调用.
我已经尝试将setInterval调用包装在一个call并保留其他所有内容,这导致step()永远不会被调用.
runner = yield call(window.setInterval, () => {
for(let i = 0; i < processRate; i++) {
corewar.step()
}
operations += processRate;
}, 1000/60)
Run Code Online (Sandbox Code Playgroud)
我已经尝试过,保持setInterval原样并将step()函数包装在一个调用中并更改匿名函数签名,function*这也导致step()永远不会被调用.
runner = window.setInterval(function*() {
for(let i = 0; i < …Run Code Online (Sandbox Code Playgroud) c# ×4
css ×1
generator ×1
http-range ×1
legend ×1
lib.web.mvc ×1
linq ×1
performance ×1
plotly ×1
python ×1
reactjs ×1
redux-saga ×1
signalr ×1
signalr-hub ×1
socket.io ×1
ssms ×1
t-sql ×1
tostring ×1