使用CheckPoint我正在尝试使用从工作到我的客户端站点的VPN访问,这在Windows 7和8中运行良好.但在Windows 10中,我收到错误"ssl网络扩展器服务已关闭......"
当CheckPoint尝试连接时,我在请求开始时收到错误消息.
尝试运行作为另一个浏览器模拟的Internet Explorer无效.
ssl internet-explorer checkpoint internet-explorer-11 windows-10
有时候使用miniprofiler时,只有一些你不关心的请求.在我的情况下,我不太关心信号器,umbraco ping,以及当我想知道用户是否闲置时提出的一些请求.
为了避免miniprofiler在这些类型的请求中使用能量(并提供结果),我将以下代码添加到我的global.asax.cs文件中:
protected void Application_BeginRequest()
{
if (
(Request.IsLocal || Request.UserHostAddress == "37.49.143.197")
&& !(Request.RawUrl.Contains("/signalr/")
|| Request.RawUrl.Contains("/idle/verify")
|| Request.RawUrl.Contains("/idle/interaction")
|| Request.RawUrl.Contains("/umbraco/ping")
)
)
{
MiniProfiler.Start();
}
}
Run Code Online (Sandbox Code Playgroud)
看到我仍然收到包含给定字符串的URL的结果,我稍后在应用程序生命周期中进行了此检查,试图消除我可以看到的不必要的结果.
protected void Application_ProcessRequest()
{
if (Request.RawUrl.Contains("/signalr/")
|| Request.RawUrl.Contains("/idle/verify")
|| Request.RawUrl.Contains("/idle/interaction")
|| Request.RawUrl.Contains("/umbraco/ping")
)
{
MiniProfiler.Stop(discardResults: true);
}
}
Run Code Online (Sandbox Code Playgroud)
但即使我已经这样做了,我仍然收到了不想要的结果.有谁知道这是怎么回事,我在这里做错了什么?
应该注意的是,因为我使用Umbraco作为我的基础,我正在使用MiniProfiler 2.1.0并且我开始我的Global.asax.cs文件,如下所示:
public class MvcApplication : UmbracoApplication
{
protected override void OnApplicationStarted(object sender, EventArgs e)
{
// Setup profiler for Controllers via a Global ActionFilter
GlobalFilters.Filters.Add(new ProfilingActionFilter()); …Run Code Online (Sandbox Code Playgroud) 我可能一直在寻找错误的东西,在错误的盒子里寻找。但是我似乎找不到一种好方法来可视化我的依赖树在 C# 中的深度。
我最初只是尝试连接 Autofac 的准备事件和激活事件。但我不知道这是否足够好。结果看起来有点时髦。似乎准备活动启动得太频繁了。并且似乎只有在实际创建新对象时才会激活激活事件。
我们的代码是 .NET 4.7.2 我们使用 Autofac 作为我们的容器来处理依赖项注入。
有没有人对我们如何可视化深度有好的想法?也许有一些好的代码或产品可以帮助我们?
是否可以为特定的div分配一个字符集?这样一来,您就可以在一个页面上拥有多个字符集。
我目前正在通过JS将文本片段导入到我的网站中,其中一些文本需要UTF-8字符集。为了确保我的文字显示在所包含的每个页面上(有时是外部站点),我强制将metatag插入所有站点。
是否可以将此字符集仅应用于特定的div,span或类似的东西?
我正在Intranet上工作,并且使用IE可以打开本地Office安装的文档存在一些问题。
我使用以下锚标记为用户提供文件:
<a target="_blank" download="{{fileName}}" href="{{filePath}}">
Run Code Online (Sandbox Code Playgroud)
当用户单击此链接时,IE会为用户提供打开或保存它的决定。如果用户选择打开文件,然后决定他/她想要编辑文件,则他们在Office应用程序顶部单击“启用编辑”。这给用户一个错误,因为Office应用程序无法连接到站点并获取用户要编辑的文件。
Office应用程序名称无法连接到(我的文件)...
我要做的是让用户编辑他们在网上找到的文档的副本。然后他们可以保存副本,然后重新上传。
我认为问题之一是文件受登录保护。也许Intranet正在SSL上运行。
在研究问题的解决方案时,我从Microsoft找到了此支持页面,该页面讨论了我正在经历的事情。他们在错误消息三中写道:
Office应用程序名称无法打开文件。
就我而言,我得到的信息是:
Office应用程序名称无法连接到(我的文件)...
几乎相同,Microsoft写道,一个问题可能是:
当Internet Explorer通过SSL与安全网站通信时,Internet Explorer会强制执行任何无缓存请求。如果存在一个或多个标题,则Internet Explorer不会缓存该文件。因此,Office无法打开该文件。
这让我开始思考,然后我开始研究此问题,找到StackOverflow页面,例如“如何为每个文件夹配置静态内容缓存...”和“利用IIS中的浏览器缓存”。我还检查了《 IIS.net配置参考》,以查看此处是否有任何可以帮助我解决问题的内容。
我认为主要的问题是,打开文件时,该文件未保存在本地,因此Office应用程序无法对其进行编辑。到目前为止,我认为解决此问题的方法是删除无缓存头,而对文件使用某种短缓存,以便浏览器强制下载该文件。
我尝试了链接的前两篇SO文章中的技术,尝试在web.config中设置静态文件的缓存,但是强制缓存没有任何改变(当我询问时,我使用此技术来确保缓存控件正确无误文件)。Office应用程序仍尝试从其无权访问的网页打开文件。
我尝试的另一件事是强制Internet Explorer下载该文件。完全删除该选项以将其打开。Microsoft也有关于它的支持页面。但这似乎没有用。在Global.asax中,我尝试了以下代码(只是看是否可以使Word文件正常工作):
<script runat="server">
void Application_PreSendRequestHeaders(Object sender, EventArgs e) {
Response.Headers.Set("Content-Type", "application/ms-word");
Response.Headers.Set("Content-Disposition", "attachment; filename=fname.ext");
}
</script>
Run Code Online (Sandbox Code Playgroud)
但这只会使Internet Explorer尝试下载我尝试访问的所有页面。
我们总是检查用户是否确实有权访问所请求的文件。我们不希望人们窥探其他文件。禁用此检查将导致所有Office应用程序都可以在用户要编辑文件时打开文件。但这是一个糟糕的解决方案,并且带来了很多安全问题。
所以我的问题是,“如何启用在IE中从受登录保护的Intranet打开的Office文档中进行编辑?” 如果与缓存有关,那么我该如何解决?当用户选择“打开”文件时,是否可以通过某种方式告诉IE保存本地副本,以及如何告诉Office应用程序查找文件的本地缓存版本,而不是尝试从中下载文件?服务器?
我将问题缩小为Office应用程序的身份验证。当我单击Office应用程序中的“启用编辑”按钮时,该应用程序正在尝试下载文件,以便它可以编辑文件。然后,该请求被服务器拒绝(服务404),因为Office应用程序未登录,并且没有任何类型的cookie来告知服务器实际上确实可以访问该文件。这导致用户收到一条消息,通知用户无法打开请求的文件。
这不是一个新问题
这里有很多关于 IE 在处理查询字符串中的特殊字符时遇到问题的问题。在所有情况下都是一样的:Chrome、Firefox、Safari(每个人)都正确处理了 UTF-8 编码的 URL,几乎所有这些甚至都处理了 IRI 未编码为 URL 的情况。但 IE 坚持让开发者过得艰难。
因为我自己遇到了这个问题,并且已经解决了很多问题。对我来说,IE 似乎出于某种原因坚持将 UTF-8 编码的 URL 解码为 ISO-8859-1,然后再将其发送到服务器。
我的情况
我是丹麦的居民,因此我必须使用丹麦字母 æøå。在很多情况下,我想将视图中的参数发送到某些 C# 方法中。特殊字符经常出现的地方的两个例子:
假设丹麦人想要搜索丹麦语单词“æblegrød”(一种特殊的苹果派)。在 Chrome 和 Firefox 中,如果我只是用 IRI 提供给浏览器:
http://example.com/Search/QuickSearch?searchQuery=æblegrød
Run Code Online (Sandbox Code Playgroud)
发送到服务器的查询如下所示:
http://example.com/Search/QuickSearch?searchQuery=%C3%A6blegr%C3%B8d
Run Code Online (Sandbox Code Playgroud)
然而,在 Internet Explorer 中,它看起来像这样:
http://example.com/Search/QuickSearch?searchQuery=æblegrød
Run Code Online (Sandbox Code Playgroud)
现在很容易看出问题所在。Firefox 和 Chrome 是 URL 编码的 URL
... 每个不是 ASCII 字母或数字的字节到 %HH,其中 HH 是字节的十六进制值
Internet Exlorer 对字符串进行直接的 UTF-8 编码,结果是“Ã|blegrød”。这也与您采用 UTF-8 字符串并将其解码为 ISO-8859-1 的最终结果相同,这是巧合吗?
我尝试了一些东西
由于 Internet Explorer 可以选择“以 UTF-8 格式发送 URL 路径”,因此我尝试禁用它。什么都不改变。
由于 IE 必须处理“searchQuery=æblegrød”时出错,我尝试在将 …
在上一个关于如何可视化依赖关系图的问题中,我获得了现在用来可视化我的依赖关系图的代码的基础,因为它是由 Autofac 解析的。
\n\n运行代码,我得到一棵树,生成如下代码。
\n\nUsd.EA.Bogfoering.WebApi.Controllers.BogfoerController (3851,7 ms. / 0,0 ms.) Depth: 0\n Usd.EA.Bogfoering.WebApi.Controllers.BogfoerController (3851,7 ms. / 0,4 ms.) Depth: 1\n Usd.Utilities.WebApi.Controllers.UnikOwinContext (0,1 ms. / 0,0 ms.) Depth: 2\n Usd.Utilities.WebApi.Controllers.UnikOwinContext (0,1 ms. / 0,0 ms.) Depth: 3\nRun Code Online (Sandbox Code Playgroud)\n\n一开始我认为代码有问题,并且由于某种原因导致组件多次得到解决。正如 Steven 指出的,当组件注册为InstancePerDependency. 但由于我的几个组件被注册为InstancePerLifetime或SingleInstance项,因此这些依赖项不应在图中解析两次。
史蒂文确实提到“依赖关系的第一个解析InstancePerDependency似乎比下一个解析有更多的依赖关系,因为该图仅显示解析。也许这就是正在发生的事情。 ”但是当我看到InstancePerLifetime组件被注册多个时在整个图表中,有好几次,我感觉这里还发生了其他事情。
这里可能发生了什么?
\n\n以下代码是我们用来注册程序集的代码:
\n\npublic static void RegisterAssemblies(this ContainerBuilder containerBuilder, IList<Assembly> assemblies, params Type[] typesToExclude)\n{\n if (containerBuilder != …Run Code Online (Sandbox Code Playgroud) 我有以下枚举:
public enum DocumentState
{
Default = 0,
Draft = 1,
Archived = 2,
Deleted = 3
}
Run Code Online (Sandbox Code Playgroud)
我的解决方案中的大多数地方都将它用作普通的枚举.我在int中使用的一些地方像这样:
(int)DocumentState.Default)
Run Code Online (Sandbox Code Playgroud)
但是,有些地方,例如当我使用Examine(只接受字符串,而不是整数作为输入)时,我需要传递en int int值,就像它是一个字符串一样.这可以通过以下方式完成:
((int)DocumentState.Default).ToString()
Run Code Online (Sandbox Code Playgroud)
我现在的问题是; 是否真的没有其他方法可以将字符串值作为字符串检索?
我知道我可能会滥用Enum,但有时这是给定情况下的最佳方法.
我们开发了一个通过 Windows Installer 分发的应用程序,该应用程序是使用 WiX 创建的,我们的客户可以从任何旧版本升级到最新版本。
然而,我们的最新版本删除了 2 个 dll,这只能通过重新安装来纠正。
Microsoft.IdentityModel.Protocol.Extensions已从Nuget 版本 1.0.2.206221351和文件版本 1.0.20622.1351 升级到Nuget 版本 1.0.4.403061554和文件版本 1.0.4.54。
System.IdentityModel.Tokens.Jwt的文件版本控制也发生了类似的变化,从Nuget 版本 4.0.2.206221351到Nuget 版本 4.0.4.403061554。
因此,通过更改文件版本的计算方式,MS 有效地将版本更改为之前的降级版本(从构建版本的 20622 更改为 4)。
有人称其为错误,有人称其为功能,但发生的情况是,MSI 有一个步骤,它会记录所有需要升级的文件,然后卸载当前版本,然后仅安装需要升级的文件。版本没有变化或升级 - 任何降级都被排除在外。
我们正在将该产品运送给许多不同的客户,他们的技术技能也各不相同,因此升级效果更好,否则我们将面临大量支持问题。有什么我可以改变的,而不需要实际禁用诸如 MSI 在出现错误时回滚的功能之类的功能,我认为这是对其他解决相同问题的人的权衡。
.net ×5
c# ×5
autofac ×2
asp.net-mvc ×1
checkpoint ×1
encoding ×1
enums ×1
examine ×1
html ×1
iis ×1
javascript ×1
ms-office ×1
nuget ×1
ssl ×1
umbraco ×1
url ×1
utf-8 ×1
windows-10 ×1
wix ×1