小编Jus*_*tin的帖子

AntiForgeryConfig.RequireSsl 在没有 SSL 的情况下使用时会导致随机错误

我们的安全团队要求将所有 cookie 设置为 Secure=true。

要为 MVC AntiForgery 设置安全属性,我们使用以下代码:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        AntiForgeryConfig.RequireSsl = HttpContext.Current.Request.IsSecureConnection;
    } 
Run Code Online (Sandbox Code Playgroud)

但是现在我们的测试服务器出现了一个问题,它没有使用 SSL。有时我们有自发的错误

The anti-forgery system has the configuration value AntiForgeryConfig.RequireSsl = true, but the current request is not an SSL request.
Run Code Online (Sandbox Code Playgroud)

在查看 ASP.NET MVC 代码以查明异常的位置时,我们发现以下内容

private void CheckSSLConfig(HttpContextBase httpContext)
{
    if (_config.RequireSSL && !httpContext.Request.IsSecureConnection)
    {
        throw new InvalidOperationException(WebPageResources.AntiForgeryWorker_RequireSSL);
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎是正确的,它应该可以工作,因为执行顺序是

    AntiForgeryConfig.RequireSsl = HttpContext.Current.Request.IsSecureConnection;
    // ... something happens in between
        if (_config.RequireSSL && !httpContext.Request.IsSecureConnection)
        {
            throw new InvalidOperationException(WebPageResources.AntiForgeryWorker_RequireSSL);
        }
Run Code Online (Sandbox Code Playgroud)

但似乎对于某些请求 HttpContext.Current.Request.IsSecureConnection …

asp.net-mvc ssl antiforgerytoken

2
推荐指数
1
解决办法
3389
查看次数

计算给定距离到两个其他点的点的坐标

如果我有三个点A,B,C和我知道它们之间的距离和A在2D坐标{0,0}并且B在{ab,0}处,那么找到坐标的公式是什么点C?

math distance coordinates

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

为什么每次创建新的viewmodel时都不调用视图构造函数?

我正在使用WPF与model-view-viewmodel模式.我有一个ResultsView和ResultsViewModel连接如下:

            <DataTemplate DataType="{x:Type VM:ResultsViewModel}">
                <VW:ResultsView/>
            </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

在我的主窗口中,我有一些分页设置,其中MainContent属性存储当前页面(ViewModel实例).

我像这样创建页面

MainContent = new ResultsViewModel();
Run Code Online (Sandbox Code Playgroud)

ResultsView基于UserControl,它还有一个Loaded事件的处理程序,它执行一些UI初始化的东西.

当用户在不同页面之间导航时,一切正常.

但是如果用户连续两次打开ResultsView,则不会再次调用ResultsView构造函数,也不会调用Loaded事件.看来现在我将新的ResultsView实例附加到新的ResultsViewModel()!

为什么每次创建新的ViewModel时WPF都不会创建新视图?如果旧的视图模型被破坏,有什么方法可以强制WPF丢弃旧视图?

wpf constructor view mvvm

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

根据频率响应计算FIR系数

我有一个振幅频率响应点列表.幅度以分贝给出.

任务是将此AFR列表导出为某些硬件DSP设备的一组系数.我知道这个设备的文件格式.该器件的规格表明它需要12288个系数,DSP有2个FIR滤波器模块(每个6144个抽头).这个想法是在加载那些系数之后,该设备应该作为均衡器工作,它根据初始的放大频率点列表转换信号.

我已经发现FIR滤波器的系数可以通过采用所需频率响应的逆傅里叶变换并且还使用一些窗口函数(优选地不是矩形)来计算.

问题是我不擅长信号处理,我不太了解FIR,我使用FFT来获取音频数据的频率响应,但我仍然对FFT和相关的东西如何工作有一个非常模糊的想法.

点的计算应该用C#或C++完成(我擅长创建C++/CLI包装器),所以我可以将它集成到现有的应用程序中.导出过程不是时间关键,因此我可以使用简单和慢速算法,但无论如何,它不应该在中档计算机上花费超过一分钟.

是否有任何免费的库或代码可以从幅频响应数据中获取FIR系数?

最好的解决方案就像是一个"黑盒子",所以我可以只输入AFR点列表并输出12288个系数,但我还要感谢多个库/代码片段,只要它们可以轻松组合在一起.

附加信息:

  • 将通过该FIR传输的音频的采样频率为44100 Hz

  • 信号的整体特性可以宽松地定义为"音乐",FIR将用于均衡高质量音频,因此如果在高端音频系统上训练有素的耳朵无法听到任何错误和信号失真,那么这些错误和信号失真都是可以接受的.

  • 理论上,初始AFR点中相邻幅度之间的差异可能在[0 dB ... 80 dB]范围内,但在实际测试中它们通常在[0 dB ... 2 dB]范围内

  • AFR点与它们之间的距离越来越远,第一点是20.17246114 20.68984457和后两点21632.14039 21754.41533

使用以下公式计算得分:

       float x;
       for(int i = 0; i<bandPoints; i++){
               x = (((float)i + 1) / ((float)(bandPoints + 2)));
               bandsHz[i] = ((x*x)*(22000-20))+20; // 20...22000
       }
Run Code Online (Sandbox Code Playgroud)

c# c++ signal-processing fft

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

C++,COM和传递字符串

我正在调试其他程序员的Windows Media Player插件的源代码.这个插件有时会导致WMP崩溃,有时打开插件设置窗口需要很长时间.仅在播放音乐时打开设置窗口时才会出现此问题.如果播放器停止,它会立即打开.

在查看代码和调试时,我已经找到了代码行,这似乎是导致问题的原因.

属性页面具有以下成员变量:

CComPtr<IDsp_plugin> m_pDsp_plugin;
Run Code Online (Sandbox Code Playgroud)

初始化时的属性页调用COM对象的get_text方法:

unsigned char * txt = NULL;
//m_pDsp_plugin is a valid pointer to IDsp_plugin
HRESULT res = m_pDsp_plugin->get_text(&txt);
Run Code Online (Sandbox Code Playgroud)

此时,hres是"0x80010105:服务器引发异常." 和Visual Studio Debug输出显示"wmplayer.exe中0x764efbae的第一次机会异常:0x80010105:

get_text方法定义如下:

在Dsp_plugin.idl中

interface IDsp_plugin : IUnknown
{
    HRESULT get_text([out] unsigned char* *pVal);
...
Run Code Online (Sandbox Code Playgroud)

在Dsp_plugin.h中

class ATL_NO_VTABLE CDsp_plugin : 
    public CComObjectRootEx<CComMultiThreadModel>,
    public CComCoClass<CDsp_plugin, &CLSID_Dsp_plugin>,
    public IDsp_plugin,
    public IMediaObject,
    public IWMPPluginEnable,
    public ISpecifyPropertyPages
{

    STDMETHOD(get_text)(unsigned char* *txt);
...
Run Code Online (Sandbox Code Playgroud)

最后抛出此异常的方法本身:Dsp_plugin.cpp

STDMETHODIMP CDsp_plugin::get_text (unsigned char* *txt)
{
   ... // some code for copying a valid …
Run Code Online (Sandbox Code Playgroud)

c++ string com exception bstr

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