我的生产环境中存在以下问题(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) 一些javascript如何告诉窗口鼠标按钮已被释放?由于跨域iframe,mouseup事件正在丢失.我可以发现问题已经发生,但我不知道该怎么做才能治愈它.如果我可以强制鼠标指针位置,问题就会消失; 但是不允许javascript更改鼠标指针位置.如果我能"点击鼠标"那么问题就会消失,因为它会取代丢失的鼠标事件; 但在新的mouseup事件上使用dispatchEvent什么都不做.
mouseup通过在iframe文档中附加alert()鼠标来证明事实确实是丢失的事件body.如果在指针位于iframe内部时释放鼠标按钮,则会发出警报; 如果在指针位于iframe之外时释放鼠标按钮,则不会发生这种情况.我再次强调,只有CHROME有这种行为.在Firefox,Edge或IE中执行完全相同的操作,无论鼠标指针在何处,都会立即检测到鼠标按钮释放.
通过将事件处理程序附加到<body>外部文档中,我可以捕获鼠标.然后我可以使用标准的postMessage技术告诉内部iframe窗口发生了mouseup.内部iframe知道在拖动过程中哪个元素处于活动状态,所以这很好.但是,在实际模拟mouseup事件时,我没有任何运气.我在这里试过这个triggerMouseEvent技术.它运行没有错误,但它显然没有做任何事情.这里的演示具有上面的最小示例,以及在外部文档中捕获mouseup的管道,将消息发布到内部文档,并调用:Demo2triggerMouseEvent
在尝试创建最小的示例时,我发现可能以某种方式涉及框模型.Demo1a与上面的demo1相同,只是iframe元素的高度为710px而不是700px.在我的测试机器上, …
在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 位)
编辑:至少另一位开发者博主同意我的观点。
使用稍旧版本的 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 不再显示任何证书信息。
有没有办法把它还给我?
我们的开发人员正在 .NET Core 3.1 中编写一些 Windows 服务。
据我了解,核心开发的典型模式是检查 DOTNET_ENVIRONMENT 变量以切换不同的配置。
由于 Reasons TM,我们希望避免设置系统级甚至用户级机器环境变量。一些原因是:
对于 IIS 启动的 Kestrel 托管应用程序,可以在 web.config 中设置额外的环境值。这不适用于命令行应用程序。
对此的最佳实践是什么?有没有办法在启动可执行文件之前设置环境变量?或者在启动时通过从配置文件中读取环境变量来设置进程内的环境变量?
其他需要提及的事情:
我正在让 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) 我开发了一个匹配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")有两个捕获,boy和girl.Groups("parent")有一次捕获,mother.但是没有什么可以告诉我parent在第二次捕获中的单次捕获sentence,除非我开始查看Index和Length每次捕获.
编辑:这是最终的答案: …
我引用的是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) 我们有一个大型应用程序成功使用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会有帮助吗?
在将ASP.NET(主要是使用AJAX的表单)应用程序部署到一个特定的生产计算机之后,重新编译过程(w3wp.exe为每个aspx或ascx文件调用CSC.exe)持续数小时.因此,网络应用程序的性能非常低迷.部署到其他生产机器时,这些非常相同的应用程序可在几分钟内完成编译.
这些aspx编译只在ProcExp中可见一秒钟,它们使用的命令行涉及一个在编译后立即删除的参数文件,因此我很难监视正在编译的文件,或者查看是否有相同的文件正在被编译不止一次.有没有办法记录编译过程,所以我可以试着弄清楚为什么这台机器行为不端?
我知道我们可以使用aspnet_compiler.exe预编译整个应用程序,但将其纳入构建和部署工作流程(TFS 2010加OctopusDeploy)将会有点痛苦.此外,我在命令行"手动"进行预编译的尝试无效.预编译成功,但当IIS指向目标目录时,对任何文件的任何请求都会引发此类错误:
异常类型:HttpException
异常消息:文件'/default.aspx'尚未预编译,无法请求.
ETA:这是我对这个问题的要求
正如标题所说,为什么会发生这种情况?
PS C:\temp> "zzz" -le "~~~"
False
PS C:\temp> "~~~" -le "zzz"
True
Run Code Online (Sandbox Code Playgroud)
"〜"是最后一个ASCII字符的下一个.我无法理解"z"之前的校对.
我正在尝试使用 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) 在SQL Server中,我有一个查询从字符串中剥离日期,需要转换为实际日期格式以加入另一个日期.
string = '07 2014年11月'
我已经尝试了强制转换(字符串作为日期),但是从字符串转换日期和/或时间时转换失败.
asp.net ×2
.net ×1
.net-core ×1
abcpdf ×1
asp.net-4.5 ×1
c# ×1
chromium ×1
cors ×1
curl ×1
date ×1
django ×1
font-face ×1
iframe ×1
linqpad ×1
mouseup ×1
node-modules ×1
node.js ×1
npm-install ×1
powershell ×1
reactjs ×1
regex ×1
sql ×1
sql-server ×1
ssl ×1
vb.net ×1
windows2012 ×1