小编Ros*_*ser的帖子

StackExchange.Redis超时和"没有连接可用于服务此操作"

我的生产环境中存在以下问题(Web-Farm - 4个节点,在它之上负载均衡器):

1)Timeout performing HGET key, inst: 3, queue: 29, qu=0, qs=29, qc=0, wr=0/0 at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor``1 processor, ServerEndPoint server) in ConnectionMultiplexer.cs:line 1699这种情况在一分钟内发生3-10次

2) No connection is available to service this operation: HGET key at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor``1 processor, ServerEndPoint server) in ConnectionMultiplexer.cs:line 1666

我尝试按照Marc的建议实现(也许我解释不正确) - 最好与Redis的连接数少于多个.我做了以下实现:

public class SeRedisConnection
{
    private static ConnectionMultiplexer _redis;

    private static readonly object SyncLock = new object();

    public static IDatabase GetDatabase()
    {
        if (_redis == null || !_redis.IsConnected || !_redis.GetDatabase().IsConnected(default(RedisKey))) …
Run Code Online (Sandbox Code Playgroud)

stackexchange.redis

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

离开iframe时鼠标丢失:导致反向输入

TL; DR问题:

一些javascript如何告诉窗口鼠标按钮已被释放?由于跨域iframe,mouseup事件正在丢失.我可以发现问题已经发生,但我不知道该怎么做才能治愈它.如果我可以强制鼠标指针位置,问题就会消失; 但是不允许javascript更改鼠标指针位置.如果我能"点击鼠标"那么问题就会消失,因为它会取代丢失的鼠标事件; 但在新的mouseup事件上使用dispatchEvent什么都不做.

情况:

  • 任何最新版本的Chrome,任何操作系统.
  • 包含位于内部的iframe的外部文档.根本不需要javascript.
  • 在不同域上托管的外部文档和内部iframe文档,均为https.相同基域的子域不同,但实际上是不同的域.我的示例使用www.pressero.com和client-prototype.dev2.edocbuilder.com.无论证书是否有效(我的是),问题仍然存在.
  • iframe中的文本框输入,位于左边缘或靠近左边缘.标准LTR文本方向.
  • 几乎没有例子:Demo1.这在外部文档中有一点点javascript,以方便更改iframe src.删除此JavaScript根本没有任何效果.

重要限制:

  • 偏偏用铬和铬的浏览器; 不是Firefox,Safari,Edge或IE.
  • 对于所有Chrome客户端是否完全相同,存在一些含糊不清的问题.我个人在运行Chrome 68或69的大约五台不同的Windows PC上亲自复制了相同的行为.一位同事在运行Chrome 69的Mac上以及在同一台Mac上运行的Windows VM中的Chrome 69上获得了略微不同的结果.

触发问题:

  • 用户尝试选择文本框输入中的所有文本,使用鼠标,从文本框末尾开始移动鼠标.
  • 无意中,用户将鼠标指针移过左边缘,因此将iframe移出外部文档.
  • 用户在鼠标指针离开iframe后释放鼠标左键.
  • 发生只有当鼠标被用于选择文本和仅当指示器在左按钮释放的时间的IFRAME外结束.其他选择文本的方法不会导致以下症状:
    • ctrl-A选择全部
    • 进入该领域
    • 使用shift-arrows选择文本
    • 使用鼠标选择文本,但从左到右
    • 使用鼠标选择文本,但在释放鼠标按钮时要小心指针位于iframe内部

制作反向插入文本的另一种方法是:

  • 将鼠标指针放在文本框的左上角.
  • 按住鼠标左键.
  • 输入文字.它是反向插入的,因为在每次击键后,插入点会在刚输入的字符之前重新定位.
  • 这仅仅是为了说明不希望的行为.这显然不是bug,因为它是一种人为的表现方式.

感知症状:

  • 在放开左按钮后键入的文本以相反的顺序插入:即,键入"abcde"将显示为"edcba",插入点位于第一个字符的左侧.

相关症状:

  • 如果正在使用javascript,例如用于调整对象大小或在画布上拖动它的功能,则即使在iframe外部释放左按钮后,拖动仍将继续.即使将指针移回iframe内部,拖动也会继续.
  • mouseup通过在iframe文档中附加alert()鼠标来证明事实确实是丢失的事件body.如果在指针位于iframe内部时释放鼠标按钮,则会发出警报; 如果在指针位于iframe之外时释放鼠标按钮,则不会发生这种情况.

我再次强调,只有CHROME有这种行为.在Firefox,Edge或IE中执行完全相同的操作,无论鼠标指针在何处,都会立即检测到鼠标按钮释放.

尝试了解决方法:

  • 建议用户注意他们的鼠标位置.不是流行的解决方案.
  • 应用于文本框的Javascript以在文本框聚焦时选择所有内容.这使得不必使用鼠标进行选择,因此可以防止用户遇到问题.但是,它使得无法选择文本的一小部分而不是整个文本.
  • 移动文本框使其不会与左边缘对齐.这使得当指针位于iframe之外时用户不太可能放手.

捕获丢失的mouseup事件:

通过将事件处理程序附加到<body>外部文档中,我可以捕获鼠标.然后我可以使用标准的postMessage技术告诉内部iframe窗口发生了mouseup.内部iframe知道在拖动过程中哪个元素处于活动状态,所以这很好.但是,在实际模拟mouseup事件时,我没有任何运气.我在这里试过这个triggerMouseEvent技术.它运行没有错误,但它显然没有做任何事情.这里的演示具有上面的最小示例,以及在外部文档中捕获mouseup的管道,将消息发布到内部文档,并调用:Demo2triggerMouseEvent

另一个奇怪的可能性

在尝试创建最小的示例时,我发现可能以某种方式涉及框模型.Demo1a与上面的demo1相同,只是iframe元素的高度为710px而不是700px.在我的测试机器上, …

iframe google-chrome chromium mouseup

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

服务器返回的 503 被 Chrome 标记为 CORS 违规

在Chrome的控制台中可以看到以下内容(匿名域名,已添加粗体):

> somesite.ourdomain.org:44301/api/v1.0/AppCache/AdministrationStatusApi:1 GET https://devesaapi.abim.org:44301/api/v1.0/AppCache/AdministrationStatusApi 503 (Service Unavailable)
> esa:1 Access to XMLHttpRequest at 'https://somesite.ourdomain.org:44301/api/v1.0/AppCache/AdministrationStatusApi' from origin 'https://othersite.ourdomain.org:44301' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource
Run Code Online (Sandbox Code Playgroud)

503 的真正原因是负载平衡节点之一未正确响应负载平衡器。然而,Chrome 认为,由于 503 响应在此跨站点请求上没有 Access-Control-Allow-Origin 标头,因此它应该抱怨 CORS。

这很糟糕,因为它误导了我们的开发人员,并浪费了一些时间来寻找实际上并不存在的 CORS 问题。

Chrome 报告此返回 503 的请求违反了 CORS,这真的是正确的做法吗?其他浏览器有什么作用?

Windows 10 上的 Google Chrome 稳定版本 72.0.3626.109(官方版本)(64 位)

编辑:至少另一位开发者博主同意我的观点。

google-chrome cors http-status-code-503

10
推荐指数
0
解决办法
2758
查看次数

用 curl 显示收到的证书?

使用稍旧版本的 curl,我有一个方便的批处理文件:

curl --verbose -k https://%1 2>&1 |grep -E "Connected to|subject|expire"
Run Code Online (Sandbox Code Playgroud)

这将向我显示连接到的 IP,以及协商的实际证书的主题和到期日期,即使这不是该域名的正确证书 - 这有时是我们托管的问题(我们实际上托管了数千个域)在我们的多租户应用程序中,大约一半拥有自己的证书)。

具体来说,在 grep 过滤之前,我会在 stderr 输出中看到类似的内容:

* Server certificate:
*  subject: CN=academy-fran.chi.v6.pressero.com
*  start date: Feb 22 04:55:00 2017 GMT
*  expire date: May 23 04:55:00 2017 GMT
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
Run Code Online (Sandbox Code Playgroud)

今天我不得不在我的机器上重新安装操作系统,并重新安装 curl。现在是 7.52.1 (x86_64-w64-mingw32) 版本;上一个似乎是 7.49.1 (i686-pc-cygwin)。无论是否使用 -k,无论 TLS 连接成功与否,Curl 不再显示任何证书信息。

有没有办法把它还给我?

ssl curl

9
推荐指数
3
解决办法
2万
查看次数

为 dotnetcore Windows 服务设置环境变量——仅限进程,而不是系统或用户

我们的开发人员正在 .NET Core 3.1 中编写一些 Windows 服务。

据我了解,核心开发的典型模式是检查 DOTNET_ENVIRONMENT 变量以切换不同的配置。

由于 Reasons TM,我们希望避免设置系统级甚至用户级机器环境变量。一些原因是:

  • 推出新服务器时需要设置的其他内容
  • 可能想在同一台服务器上运行不同的“环境”——也许不是为了服务,而是为了其他命令行应用程序

对于 IIS 启动的 Kestrel 托管应用程序,可以在 web.config 中设置额外的环境值。这不适用于命令行应用程序。

对此的最佳实践是什么?有没有办法在启动可执行文件之前设置环境变量?或者在启动时通过从配置文件中读取环境变量来设置进程内的环境变量?

其他需要提及的事情:

configuration .net-core

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

用于 SMTP 的 G Suite 和 Django

我正在让 G Suite 与我的 django 站点一起工作,以便它将替换我主机的 SMTP 服务器。我在我的虚拟主机的配置面板中配置了我的域。结果,当我向 support@mysite.com 发送电子邮件时,我可以看到它已成功发送到 Google 帐户,这很棒。

我的应用程序设置为在有人尝试注册后发送确认电子邮件。

我已经完成了我认为使用 django 项目设置 G Suite 所需的所有步骤,但是当我的项目在有人注册后尝试发送确认电子邮件时,我仍然收到错误消息。具体来说,我在 Django 错误页面上看到以下内容:

SMTPServerDisconnected at /access/register/ Connection unexpectedly closed
Run Code Online (Sandbox Code Playgroud)

我已经完成了以下步骤:

1.我已经设置了 SMTP 中继服务 ( https://support.google.com/a/answer/2956491 ),这意味着我已经:

2.在我的 django 设置文件中,我使用了以下设置:

EMAIL_HOST = 'smtp-relay.gmail.com'
EMAIL_HOST_USER = 'support@mysite.com'
EMAIL_HOST_PASSWORD = '********'
DEFAULT_FROM_EMAIL = 'support@mysite.com'
SERVER_EMAIL = 'support@mysite.com'
EMAIL_PORT = 465 
EMAIL_USE_TLS = False
Run Code Online (Sandbox Code Playgroud)

我还应该提到,通过以下设置,在我开始实施 G Suite 之前,我的应用程序能够在向虚拟主机的 SMTP 服务器注册后发送验证电子邮件,以便我知道应用程序的那部分工作正常。

EMAIL_HOST = 'smtp.mywebhost.com'
EMAIL_HOST_USER = 'admin'
EMAIL_HOST_PASSWORD = …
Run Code Online (Sandbox Code Playgroud)

django django-settings google-workspace

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

使用正则表达式中的嵌套命名组,可以导航层次结构?

我开发了一个匹配pstops页面规范的正则表达式.(正则表达式空白不重要.)

^(?:(?<modulo>\d+):)?
(?<pages>
  (?<pagespec>
    (?<pageno>-?\d+)
    (?<rotation>[RUL]?)?
    (?:@(?<scale>\d*(?:\.\d+)))?
    (?:\(
      (?<xoff>\d*\.?\d+)(?<xunit>in|cm|w|h)?
      ,
      (?<yoff>\d*\.?\d+)(?<yunit>in|cm|w|h)?
    \))?
  \+?)+,?
)+$
Run Code Online (Sandbox Code Playgroud)

.

'Sample string:
'"4:1L@.7(21cm,0)+-2L@.7(21cm,14.85cm),1L(21cm,0)+-2L@.7(21cm,14.85cm)"
Run Code Online (Sandbox Code Playgroud)

如您所见,有嵌套的命名子组.一个pagespec不需要指定rotation,例如.我希望能够做到这一点:

If match.Groups("pages").Captures(0).Groups("pagespecs").Captures(1).Groups("rotation").Value > ""
Run Code Online (Sandbox Code Playgroud)

但当然Captures没有Groups财产.有没有办法以这种方式访问​​层次结构中的子组?

编辑:这是一个更简单的例子(这次重要的空白区域):

(?<paragraph>(?:(?<sentence>The (?<child>boy|girl) is hungry\.|The (?<parent>mother|father) is angry\.)\s*)+)
Run Code Online (Sandbox Code Playgroud)

与此字符串匹配:

The boy is hungry. The mother is angry. The girl is hungry.
Run Code Online (Sandbox Code Playgroud)

产生一场比赛.在那场比赛中,

  • Groups("paragraph") 有一个捕获匹配整个字符串.
  • Groups("sentence") 有三次捕获.
  • Groups("child")有两个捕获,boygirl.
  • Groups("parent")有一次捕获,mother.

但是没有什么可以告诉我parent在第二次捕获中的单次捕获sentence,除非我开始查看IndexLength每次捕获.

编辑:这是最终的答案: …

.net regex

6
推荐指数
1
解决办法
1239
查看次数

LINQPad中的本机DLL

我引用的是NuGet包ABCpdf,它提供了abcpdf.dllx86和x64品种的托管DLL 和四对本机DLL:

packages\ABCpdf\11.2.2\build\PrintHook64.dll
packages\ABCpdf\11.2.2\build\3DGlue11-32.dll
packages\ABCpdf\11.2.2\build\3DGlue11-64.dll
packages\ABCpdf\11.2.2\build\ABCpdf11-32.dll
packages\ABCpdf\11.2.2\build\ABCpdf11-64.dll
packages\ABCpdf\11.2.2\build\ChakraCore32.dll
packages\ABCpdf\11.2.2\build\ChakraCore64.dll
packages\ABCpdf\11.2.2\build\PrintHook32.dll
Run Code Online (Sandbox Code Playgroud)

在LinqPad中运行的需要一个或多个这些DLL的查询会失败,除非我将所有这些DLL手动复制到%PROGRAMFILES%\LINQPad5是LINQPad作者@ joe-albahari所建议的。

那是在2016年。2018年还有更多自动方式吗?

我尝试在查询属性中添加对本机DLL的引用;产生这个错误

CS0009 Metadata file '..\ABCpdf11-64.dll' could not be opened -- PE image doesn't contain managed metadata.
Run Code Online (Sandbox Code Playgroud)

我尝试使用“ 将所有非框架参考复制到单个本地文件夹”选项,这听起来像是针对这种情况而设计的。不幸的是,这也不起作用。仍然出现此错误

DllNotFoundException: Unable to load DLL 'ABCpdf11-32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Run Code Online (Sandbox Code Playgroud)

linqpad

6
推荐指数
1
解决办法
239
查看次数

使用@ font-face和ABCPDF?或者将字体变成PDF的其他方式?

我们有一个大型应用程序成功使用ABCPDF.NET与HTML样式文本.我们习惯于使用未安装在Windows中的字体添加文本,但存储在文件系统中其他位置的文件中 - 我们这样做,这样每个用户都可以上传自己的字体并将其与输出一起使用.我们使用AddFont调用将字体嵌入Doc中,然后使用AddText调用在HTML样式文本的标记中引用该字体.

我们开始考虑使用AddImageUrl/AddImageHTML来获得更多HTML功能.因此,字体是一个棘手的问题.似乎MSHTML和Gecko引擎只能看到与Windows相同的字体列表.

我试过这段代码来看看@ font-face是否适用于Gecko:

Sub Main
    dim pdf as new Doc
    with pdf.HtmlOptions
        .Engine = EngineType.Gecko
        .FontEmbed = true
        .FontSubstitute = false
        .FontProtection = false
    end with
    pdf.AddImageUrl("http://www.w3.org/2010/09/web-on-tv/slides/1009-tv-web-chaals/demos/webfonts.htm")
    pdf.Save("c:\temp\a.pdf")
End Sub
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.还有什么我可以做的吗?

这是ABCpdf.NET 8.1.0.7.升级到9或更高版本的8会有帮助吗?

vb.net asp.net abcpdf font-face

5
推荐指数
2
解决办法
3084
查看次数

ASP.NET不断编译

在将ASP.NET(主要是使用AJAX的表单)应用程序部署到一个特定的生产计算机之后,重新编译过程(w3wp.exe为每个aspx或ascx文件调用CSC.exe)持续数小时.因此,网络应用程序的性能非常低迷.部署到其他生产机器时,这些非常相同的应用程序可在几分钟内完成编译.

这些aspx编译只在ProcExp中可见一秒钟,它们使用的命令行涉及一个在编译后立即删除的参数文件,因此我很难监视正在编译的文件,或者查看是否有相同的文件正在被编译不止一次.有没有办法记录编译过程,所以我可以试着弄清楚为什么这台机器行为不端?

我知道我们可以使用aspnet_compiler.exe预编译整个应用程序,但将其纳入构建和部署工作流程(TFS 2010加OctopusDeploy)将会有点痛苦.此外,我在命令行"手动"进行预编译的尝试无效.预编译成功,但当IIS指向目标目录时,对任何文件的任何请求都会引发此类错误:

异常类型:HttpException

异常消息:文件'/default.aspx'尚未预编译,无法请求.

ETA:这是我对这个问题的要求

  1. 有什么我应该检查以确定为什么这台机器花费这么多时间编译?
  2. 我可以做些什么来记录哪些文件正在编译时?

c# asp.net asp.net-4.5 windows2012

5
推荐指数
1
解决办法
1157
查看次数

为什么"zzz"-le"~~~"是假的?

正如标题所说,为什么会发生这种情况?

PS C:\temp> "zzz" -le "~~~"
False

PS C:\temp> "~~~" -le "zzz"
True
Run Code Online (Sandbox Code Playgroud)

"〜"是最后一个ASCII字符的下一个.我无法理解"z"之前的校对.

powershell

4
推荐指数
2
解决办法
136
查看次数

如何修复对等依赖安装问题

我正在尝试使用 npm 安装 react-contenteditable。但是 eslint 的对等依赖项不允许我使用以下错误进行安装。我正在使用 Ubuntu 18.04 LTS 操作系统。

这是我用来安装 react-contenteditable 的代码。

npm i react-contenteditable
npm WARN @typescript-eslint/eslint-plugin@1.11.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @typescript-eslint/experimental-utils@1.11.0 requires a peer of typescript@* but none is installed. You must install peer dependencies yourself.
npm WARN @typescript-eslint/parser@1.11.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @typescript-eslint/typescript-estree@1.6.0 requires a peer of typescript@* but none …
Run Code Online (Sandbox Code Playgroud)

node.js node-modules reactjs npm-install

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

如何在SQL Server中将字符串转换为dd mmm yyyy格式的日期

在SQL Server中,我有一个查询从字符串中剥离日期,需要转换为实际日期格式以加入另一个日期.

string = '07 2014年11月'

我已经尝试了强制转换(字符串作为日期),但是从字符串转换日期和/或时间时转换失败.

sql sql-server date

0
推荐指数
1
解决办法
2262
查看次数