小编Ric*_*ahl的帖子

如何实现可靠的网页计数器?

实现网页计数器的好方法是什么?

从表面上看,这是一个简单的问题,但在处理搜索引擎抓取工具和机器人时,同一用户多次点击,刷新点击时会出现问题.

具体来说,确保链接不仅仅是用户通过反复点击"点击"的好方法是什么?IP地址?饼干?这两个都有一些缺点(IP地址不一定是唯一的,可以关闭cookie).

另外,存储数据的最佳方法是什么?单独增加计数器或将每次单击存储为日志表中的记录,然后偶尔进行汇总.

任何现场体验都会有所帮助,

+++瑞克---

counter

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

创建具有完全信任权限(包括网络权限)的托管CLR AppDomain

我需要在非托管进程中托管.NET运行时.我有通过COM加载运行时的代码,我可以将程序集加载到AppDomain并执行代码就好了.

但是,我遇到了托管在网络共享上的应用程序的问题,并且必须更改应用程序策略才能让它们执行而不是一个选项.所以我想要做的是将运行时的主AppDomain的权限级别设置为不受限制.

有人可以举例说明如何设置AppDomain策略级别吗?我无法弄清楚如何从非托管代码实例化所需的类来创建PolicyLevel和相关对象并设置策略.基本上我不知道我需要从我使用的C++代码中使用什么包含/命名空间引用.

这是我此时的代码:

/// Starts up the CLR and creates a Default AppDomain
DWORD WINAPI ClrLoad(char *ErrorMessage, DWORD *dwErrorSize)
{
    if (spDefAppDomain)
        return 1;


    //Retrieve a pointer to the ICorRuntimeHost interface
    HRESULT hr = CorBindToRuntimeEx(
                    ClrVersion, //Retrieve latest version by default
                    L"wks", //Request a WorkStation build of the CLR
                    STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN | STARTUP_CONCURRENT_GC, 
                    CLSID_CorRuntimeHost,
                    IID_ICorRuntimeHost,
                    (void**)&spRuntimeHost
                    );

    if (FAILED(hr)) 
    {
        *dwErrorSize = SetError(hr,ErrorMessage);   
        return hr;
    }

    //Start the CLR
    hr = spRuntimeHost->Start();

    if (FAILED(hr))
        return hr;

    CComPtr<IUnknown> pUnk;

    //Retrieve the …
Run Code Online (Sandbox Code Playgroud)

c# c++ clr-hosting security-policy

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

Gulp - 如何使用gulp-concat控制处理顺序

我正在尝试使用gulp-concat将组合的JavaScript和CSS资源生成到单个文件中,使用以下内容:

var concatjs = gulp
    .src(['app/js/app.js','app/js/*Controller.js', 'app/js/*Service.js'])
    .pipe(concat('app.js'))
    .pipe(gulp.dest('build'));
Run Code Online (Sandbox Code Playgroud)

我得到一个带有这个的连接文件,但是组合输出文件中嵌入的javascript文件的顺序是随机的 - 在这种情况下,控制器在初始app.js文件之前显示,这在尝试加载Angular应用程序时会导致问题在加载任何相关资源之前需要app.js.同样地,对于最终以随机顺序组合的CSS资源,并且顺序再次有点重要 - 即.bootstrap需要在主题和任何自定义样式表之前加载.

如何设置连接过程以使订单保持不变?

更新 因此事实证明,DOES上面的排序实际上是通过在文件规范数组中明确指定文件顺序来实现的.所以在这种情况下,关键是首先列出app/js/app.js,然后让其余的脚本以任何顺序无关紧要.

我没有看到这种行为(Duh!)的原因是Gulp Watch正在运行并且gulpfile.js更新实际上没有反映在输出中.重新启动gulp确实更新了脚本.新手错误......

其他想法: 但仍然想知道 - 这是指定构建顺序的正确位置吗?现在看来你正在将应用程序逻辑(加载顺序)填充到构建脚本中,这感觉不对.还有其他方法可以解决这个问题吗?

angularjs gulp

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

无法停止为静态内容触发ASP.NET模块

我在ASP.NET MVC应用程序中有一个模块.该模块工作正常,但它为所有类型的文件,包括静态内容触发,即使我有:

<modules  runAllManagedModulesForAllRequests="false">
    <add name="MyModule" ... / >
</modules>
Run Code Online (Sandbox Code Playgroud)

该模块挂钩AcquireRequestState和PostRequestHandlerExecute事件,并且都显示静态内容触发(.htm,.css,.png等).

我的印象是runAllManagedModulesForAllRequests ="false"应该阻止模块触发非ASP.NET内容.

澄清:

可以像这样设置preCondition ="managedHandler":

<add name="MyModule" type="MyApp.MyModule" preCondition="managedHandler" />
Run Code Online (Sandbox Code Playgroud)

并让我的模块只触发托管请求.

但是,我试图理解为什么IIS管道通常会为每个请求触发托管模块命中.我认为这在旧版本中运行得很好,除非runAllManagedModulesForAllRequests ="true",否则它不会将非托管内容发送到ASP.NET模块.

在Windows 8 64位模式下运行IIS8,具有集成管道模式.

更新:

经过一些研究后发现以下情况属实:

  • 如果runAllManagedModulesForAllRequests ="true"所有模块 - 无论它们的preCondition属性设置如何触发所有请求.对于HttpApplication上的Application_XXXX事件实现也是如此
  • 除非设置了 preCondition ="managedHandler" ,否则 runAllManagedModulesForAllRequests ="false"不会阻止非托管请求命中模块
  • runAllManagedModulesForAllRequests ="false"确实会影响Application_XXXX事件,导致这些事件仅在托管请求上触发.IOW,Application_XXXX的行为好像'模块'实现有一个preCondition ="managedHandler"

有关这方面的更多详细信息,我发布了一篇博客文章:http: //www.west-wind.com/weblog/posts/2012/Oct/25/Caveats-with-the-runAllManagedModulesForAllRequests-in-IIS-78

asp.net iis

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

在从Web访问的自托管SignalR服务器中实现授权

我正在寻找关于如何在自托管(非IIS)环境中运行的后端服务上实现SignalR的授权安全性的一些指导,该环境是从Web应用程序调用的.后端应用程序基本上是一个监视器,可以将SignalR事件激发回基于HTML的客户端.这一切都很好(实际上非​​常好).

但是,我们需要从Web站点限制对经过身份验证的用户的服务器访问.所以基本上如果用户在网站上进行了身份验证,我们需要在后端应用程序中以某种方式获取凭据(用户名就足够了)和验证状态,以决定是否允许连接以避免未经授权的访问.

任何人都可以指出如何完成这种授权转发的一些策略或模式?

signalr signalr-hub signalr.client

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

VSIX:将菜单项添加到Visual Studio编辑器上下文菜单

我有一个内部扩展我想添加到Visual Studio,它应该连接到编辑器上下文菜单 - 无论打开什么类型的文件.我可以动态处理启用/可见性,但实际上我希望它可以在任何类型的编辑器文件中访问.

我无法找到正确的父命令/组ID来设法在编辑器上下文菜单上显示自定义按钮.我怀疑没有一个Id,但有几个但是我应该关注的任何指导.很难弄清楚正确的父命令Id是什么来连接编辑器上下文菜单.

具体来说,我需要能够将Visual in Browser选项中的选项添加到Visual Studio无法识别为HTML/Web文件的文件中(即使它们已映射到相应的编辑器).

相关:无论如何以合理的方式发现菜单命令和组名?在SharedCommandPlace.vsct中进行探索就像我来的那样近,但即使这样也很难与实际的菜单项匹配.

visual-studio vsix

6
推荐指数
3
解决办法
7209
查看次数

WPF App.OnStartup()与写入文件和FileWatcher崩溃

在处理使用Singleton实例模式的WPF应用程序时,我有一个非常疯狂的问题,以确保只运行单个实例.然而,单实例检测和命令行转发机制可以正常工作,作为启动代码的一部分,它出现在辅助实例上,这些实例将文件写入磁盘,由主应用程序通过磁盘读取FileWatcher.辅助实例经常因内核级别错误而崩溃.

检查辅助实例和随机崩溃的启动代码执行此操作:

    protected override void OnStartup(StartupEventArgs e)
    {
            bool isOnlyInstance = false;
            Mutex = new Mutex(true, @"MarkdownMonster", out isOnlyInstance);
            if (!isOnlyInstance)
            {
                filesToOpen = " ";
                var args = Environment.GetCommandLineArgs();
                if (args != null && args.Length > 1)
                {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 1; i < args.Length; i++)
                    {
                        sb.AppendLine(args[i]);
                    } 
                    filesToOpen = sb.ToString();
                }

                File.WriteAllText(mmApp.Configuration.FileWatcherOpenFilePath, filesToOpen);

                Mutex.Dispose();

                // This blows up when writing files and file watcher watching …
Run Code Online (Sandbox Code Playgroud)

c# windows wpf

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

ASP.NET Core中的Windows身份验证:手动登录与自动Intranet登录和可用组

我有一个与本地Intranet Windows身份验证一起使用的ASP.NET Core 3.0应用程序,用于标识已登录的用户。使用标准的Windows身份验证行为,我可以WindowsIdentity毫无问题地捕获用户的行为。

但是,根据用户使用Intranet浏览器自动登录(即无密码对话框)或使用浏览器“密码”对话框显式登录到浏览器的方式,对于用户组我会得到不同的结果

以下是一个API请求,它回显包括过滤后的组成员资格列表(不包括内置帐户)在内的用户信息。左边的是手动登录,右边的是自动登录。

对于显式登录,我正确地看到了该用户所属的所有自定义组。但是,对于自动登录,这些相同的组不会显示:

手动和自动登录的组差异

我还仔细查看了服务器上的User和Identity实例,它为用户引用了完全相同的SID,因此对于Group Membership返回不同的结果似乎很奇怪。

有什么想法为什么当我返回相同的帐户时组列表不同?请注意,这些组是本地的,因此由于域访问而不会成为问题。

注意:我什至在本地主机上进行测试,要对此进行测试,请在此处设置Windows代理设置:

登录配置

取消选中复选框,我被迫登录。启用它们(无论如何在Chromium浏览器中),我必须在浏览器的登录对话框中明确输入我的凭据。

windows-authentication asp.net-core

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

如何创建Gulp任务以正确地进行缩小和源映射到.min文件

我正在尝试创建一个gulp任务来同时压缩和创建源映射.压缩和源映射创建工作,但我似乎无法弄清楚如何在使用gulp-rename插件时正确获取输出名称.

为了简化:我source.js/src文件夹中有一个文件,我想在文件夹中创建.min.js.js.map文件/dist.

这就是我所拥有的:

gulp.task('scripts', function () {

// compressed
gulp.src(['src/*.js'])
    .pipe(sourcemaps.init({ includeContent: false, sourceRoot: './' }))        
    .pipe(uglify())        
    .pipe(sourcemaps.write('./', {
        sourceMappingURL: function(file) {
            return file.relative + '.map';
        }
    }))
    .pipe(rename({ suffix: '.min' }))
    .pipe(gulp.dest('./dist'));
});
Run Code Online (Sandbox Code Playgroud)

这适用于它在以下方面创建以下内容/dist:

  • jquery-resizable.min.js (所有好的 - 压缩,地图参考和正确的名称)
  • jquery-resizable.js.min.map (地图在那里,但名字不好 - 应该是jquery-resizable.js.map)

我已经尝试了大量的变化,但我无法弄清楚如何获得地图和压缩来构建并获得正确的文件名.

我也试过在一个单独的步骤中重命名文件,但由于gulp的异步性质,这不能可靠地工作 - 有时它有效它不会这样看起来也不是一个选项.

我错过了什么?

我没有以这种方式创建源图,但是这样做的正确方法是什么?我看到的所有示例似乎都按照上面的操作执行,除非它们不将输出文件重命名为min.js,这似乎是该过程的重要部分.

gulp gulp-sourcemaps gulp-rename

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

DwmGetWindowAttribute 使用 PInvoke 返回 0

我试图通过捕获特定窗口来进行屏幕捕获,并且为了准确地计算出要捕获的窗口的大小,我想使用 DwmGetWindowAttribute()。当我在 Windows 10 上使用 PInvoke 调用此函数时,Rect即使结果值为 0(成功),结构也始终为空。传入的窗口句柄也是有效的,因为有后备代码调用GetWindowRect()它的工作原理(尽管存在边界问题)。

我有点不知所措。我不久前使用过相同的代码(也许在 Windows 8.1 上?)并且相同的代码似乎可以工作,但现在无论我做什么,对该函数的调用总是返回一个空结构。

这是相关代码。

定义:

    [DllImport("dwmapi.dll")]
    static extern int DwmGetWindowAttribute(IntPtr hwnd, int dwAttribute, out Rect pvAttribute, int cbAttribute);


    [Flags]
    public enum DwmWindowAttribute : uint
    {
        DWMWA_NCRENDERING_ENABLED = 1,
        DWMWA_NCRENDERING_POLICY,
        DWMWA_TRANSITIONS_FORCEDISABLED,
        DWMWA_ALLOW_NCPAINT,
        DWMWA_CAPTION_BUTTON_BOUNDS,
        DWMWA_NONCLIENT_RTL_LAYOUT,
        DWMWA_FORCE_ICONIC_REPRESENTATION,
        DWMWA_FLIP3D_POLICY,
        DWMWA_EXTENDED_FRAME_BOUNDS,
        DWMWA_HAS_ICONIC_BITMAP,
        DWMWA_DISALLOW_PEEK,
        DWMWA_EXCLUDED_FROM_PEEK,
        DWMWA_CLOAK,
        DWMWA_CLOAKED,
        DWMWA_FREEZE_REPRESENTATION,
        DWMWA_LAST
    }

    [Serializable, StructLayout(LayoutKind.Sequential)]
    public struct Rect
    {
        public int Left;
        public int Top;
        public int Right;
        public int Bottom;

        public Rectangle ToRectangle()
        {
            return …
Run Code Online (Sandbox Code Playgroud)

c# windows pinvoke

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