小编Dan*_*nez的帖子

使用SendKeys发送特殊字符

我使用文本框通过SendKeys发送文本,但是当我在文本框中插入特殊字符时,我的应用程序崩溃了.例如,当我在文本框中输入"+"时,我收到此错误:SendKeys字符串'+'无效.

我需要一个使用SendKeys发送特殊字符的解决方案,这是我的代码的一部分:

SendKeys.Send(dropDownEffectsLeft1.SelectedItem.ToString() + dropDownEffectsRight1.SelectedItem.ToString() + txt1.Text);
Run Code Online (Sandbox Code Playgroud)

这就是所谓的文本框 txt1

我想我需要像a一样Regex来检查我是否txt包含任何特殊字符,并且我将使用:

Regex specialChar = new Regex(@"^[a-zA-Z0-9_@.-]*$");
Run Code Online (Sandbox Code Playgroud)

我非常感谢你的帮助.

c# regex keyboard character sendkeys

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

Angular 5.2 AOT构建错误预期0个参数,但在使用$ event时得到1

我在没有参数的方法中捕获输出事件,它工作正常.但是当我尝试构建AOT时 - 产生以下错误.

期望0个参数,但得到1

Html code: SaveSortOrder($event)
backend code: SaveSortOrder() {}
Run Code Online (Sandbox Code Playgroud)

angular angular-aot

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

使用服务标识时无法连接到 Azure Key Vault

我正在尝试使用 ASPNet 4.6.2 Web 应用程序中的服务标识从 Azure Key Vault 检索机密。我正在使用本文中概述的代码。在本地,一切正常,尽管这是因为它使用了我的身份。当我将应用程序部署到 Azure 时keyVaultClient.GetSecretAsync(keyUrl),调用时出现异常。

尽我所知,一切都配置正确。我创建了一个用户分配的身份,以便可以重复使用,并确保该身份可以访问 KeyVault 策略中的机密和密钥。

一个例外是AzureServiceTokenProviderException. 它很冗长,并概述了它如何尝试四种方法来进行身份验证。我关心的信息是它何时尝试使用托管服务标识:

尝试使用托管服务标识获取令牌。无法获取访问令牌。MSI 响应代码:BadRequest,响应:

我检查了应用程序见解,发现它试图与 400 结果错误建立以下连接:

http://127.0.0.1:41340/MSI/token/?resource=https://vault.azure.net&api-version=2017-09-01
Run Code Online (Sandbox Code Playgroud)

这有两件有趣的事情:

  1. 为什么要尝试连接到本地主机地址?这似乎是错误的。
  2. 因为资源参数没有转义,这会得到 400 吗?
  3. 在 MsiAccessTokenProvider源中,它仅在设置了环境变量 MSI_ENDPOINT 和 MSI_SECRET 时才使用该地址形式。它们没有在应用程序设置中设置,但是当我输出环境变量时,我可以在调试控制台中看到它们。

此时我不知道该怎么办。网上的例子都让它看起来很神奇,但如果我对问题的根源是正确的,那么有一些模糊的自动化设置需要修复。

为了完整起见,这里是我所有的相关代码:

public class ServiceIdentityKeyVaultUtil : IDisposable
{
    private readonly AzureServiceTokenProvider azureServiceTokenProvider;
    private readonly Uri baseSecretsUri;
    private readonly KeyVaultClient keyVaultClient;


    public ServiceIdentityKeyVaultUtil(string baseKeyVaultUrl)
    {
        baseSecretsUri = new Uri(new Uri(baseKeyVaultUrl, UriKind.Absolute), "secrets/");
        azureServiceTokenProvider = new AzureServiceTokenProvider();
        keyVaultClient = …
Run Code Online (Sandbox Code Playgroud)

asp.net azure azure-keyvault

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

Excel biff5到biff8的转换

我的系统使用Apache-POI来管理一些xls文件.现在我有近300个xls文件,但看起来它们是旧的格式,所以我得到了这个例外:

提供的电子表格似乎是Excel 5.0/7.0(BIFF5)格式.POI仅支持BIFF8格式(来自Excel版本97/2000/XP/2003)

有没有办法处理或自动将所有这些文件转换为biff8格式?

xls apache-poi

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

正则表达式仅捕获匹配中捕获组的最后一个实例

我有两种不同语言的正则表达式,它们产生相同的奇数结果(javaScript和Flash).我想知道的不是如何解决它,而是为什么会发生这种行为?

正则表达式:

\[(\\{2}|\\\]|[^\]])*\]
Run Code Online (Sandbox Code Playgroud)

这里的目标是匹配一个括号中的字符串,并确保我不会停留在转义括号中.

如果我有文本输入[abcdefg]它是正确匹配的,但作为捕获组的一部分返回的唯一内容是g,在我期望的位置abcdefg.如果我将表达式更改为 \[((?:\\{2}|\\\]|[^\]])*)\],那么我得到我想要的结果.

那为什么会这样呢?这会在其他语言中保持一致吗?

注意:简化表达式以\[([^\]])*\]产生相同的问题.

javascript regex actionscript-3 capturing-group ecmascript-5

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

来自子控制器的$ emit工作,但来自父范围的$ broadcast不能

当我打电话给$scope.$broadcast我的孩子正在听的任何事件都没有被触发.简化示例如下:

HTML

下面是我想要完成的一个简化示例:

<div ng-app="app" ng-controller="parentCtrl">
  <div ng-controller="childCtrl">
    <b>Parent Event:</b> {{outer}}<br />
    <b>Child Event:</b> {{inner}}<br />
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

AngularJs

mc = angular.module('app', [
  'app.controllers',
]);

angular.module('app.controllers', [])
    .controller('parentCtrl', ['$scope', '$http', '$q', function ($scope, $http, $q) {
        $scope.outer = 'not executed';
        $scope.$broadcast('EventFromParent');
        $scope.$on('EventFromChild', function () { 
          $scope.outer = 'executed';
        });        
    }])
    .controller('childCtrl', ['$scope', '$http', function ($scope, $http) {
        $scope.inner = 'not executed';
        $scope.$on('EventFromParent', function () { 
          $scope.inner = 'executed';
        });
        $scope.$emit('EventFromChild');
    }]);
Run Code Online (Sandbox Code Playgroud)

产量

我希望看到父母和孩子都被触发,但我没有被触发为Child.

EXPECTED                      ACTUAL
------                        ------
Parent …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-scope

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

停止由CancellationToken生成的异常获取ApplicationInsights的报告

认为CancellationToken在控制器中像这样使用将是一个好主意:

[HttpGet("things", Name = "GetSomething")]
public async Task<ActionResult> GetSomethingAsync(CancellationToken ct) {
    var result = await someSvc.LoadSomethingAsync(ct);
    return Ok(result);
}
Run Code Online (Sandbox Code Playgroud)

问题是,现在Azure Application Insights显示了许多类型的异常System.Threading.Tasks.TaskCancelledException: A Task was canceled.以及偶然的异常Npgsql.PostgresException: 57014: canceling statement due to user request。这是我不需要的噪音。

使用标准方法-将Application Insights注册为服务services.AddApplicationInsightsTelemetry(Configuration);

尝试的解决方案

我以为我可以进入应用程序管道并捕获上述异常,将它们转换为正常的响应。我将代码放在各个地方。它捕获任何异常,如果IsCancellationRequested,则返回一个虚拟响应。否则,它将抛出捕获的异常。

app.Use(async (ctx, next) =>
{
    try { await next(); }
    catch (Exception ex)
    {
        if (ctx.RequestAborted.IsCancellationRequested)
        {       
            ctx.Response.StatusCode = StatusCodes.Status418ImATeapot;
        }
        else { throw; }
    }
});
Run Code Online (Sandbox Code Playgroud)

该代码的工作方式是更改响应。但是,异常仍会发送到Application Insights。

要求

  • 我想有一个解决方案,RequestAborted.IsCancellationRequested可以尝试捕获特定的异常。原因是,如果我已经发现一个实现抛出了一种并非源自OperationCanceledException …

c# cancellation-token azure-application-insights asp.net-core

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

查找SQL中的所有整数间隔

我有一个数据库,用于存储我从外部来源引入的游戏的不同比赛信息。由于一些问题,数据库中偶尔会出现空白(可能从1个丢失的ID到几百个)。我想让程序为丢失的游戏提取数据,但是我需要首先获取该列表。

这是表格的格式:

id (pk-identity)  |  GameID (int)  |  etc.  |  etc.  
Run Code Online (Sandbox Code Playgroud)

我曾想过编写一个程序来循环运行并查询从1开始的每个GameID,但似乎应该有一种更有效的方法来获取丢失的数字。

是否有使用SQL Server的简单有效的方法来查找范围中所有丢失的数字?

sql sql-server sql-server-2008

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

对于仅包含数学的整数,获得1,0,-1为正,零或负

我有一种情况,我正在对大量行进行计算,如果我可以避开条件语句,我可以真正提高性能.

我需要的是给定的正,零或负整数我想分别得到结果1,0,-1.

所以,如果我这样做col/ABS(col),我将获得1为正数,-1为负数,但当然如果col等于0,那么我将得到一个错误.我不能得到错误.

这看起来很简单,但我无法绕过它.

algorithm

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

如何解码类似 JSON 的 JavaScript 对象文字字符串

我在从我认为是 JSON 的字符串数组中解码时遇到问题。

var result = [
  "{gene: 'PEX2', go_bp: '0.766500871709', CombinedPvalue: '9.999999995E-4'}",
  "{gene: 'PEX5', go_bp: '0.766472586087', CombinedPvalue: '9.999999995E-4'}",
  "{gene: 'PEX7', go_bp: '0.766386859737', CombinedPvalue: '9.999999995E-4'}"
];
Run Code Online (Sandbox Code Playgroud)

您可以看到 JavaScript 对象文字中有 3 个与基因相关的字符串,每个字符串都编码为字符串。我怎样才能解码这些?

我尝试过JSON.parse,但它给了我一个错误。

for (var i = 0; i < result.length; i++) 
    console.log(JSON.parse(result[i]));
Run Code Online (Sandbox Code Playgroud)

Uncaught SyntaxError: Unexpected token g

有简单的方法吗?

javascript json

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

使用用于AzureBearerAuthentication的JWT获取Access令牌

我有一个WebApi应用程序正在使用Windows Azure Active Directory承载身份验证来验证用户.用户通过身份验证后,我想查询Azure的Graph Api以获取有关该用户的更多信息.

我有一个有效的解决方案,但似乎非常hacky.我读取了Authorization标头并删除了承载部分,然后我使用AquireToken获取新标记:

var authHeader = HttpContext.Current.Request.Headers["Authorization"];
var tokenMatch = Regex.Match(authHeader, @"(?<=^\s*bearer\s+).+$", RegexOptions.IgnoreCase);

var result = authInfo.AuthContext.AcquireToken(resourceId, authInfo.Credential, 
    new UserAssertion(tokenMatch.Value));

return result.AccessToken;
Run Code Online (Sandbox Code Playgroud)

必须有一个更好的方法,但我已经尝试过AcquireToken许多不同的重载,这是我能让它工作的唯一方法.我尝试了AcquireTokenSilent,它在我的客户端应用程序中工作,因为TokenCache中有一个令牌,但是当我尝试使用WebApi时,似乎没有任何地方可以实现TokenCache.

authentication jwt asp.net-web-api owin azure-active-directory

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

Javascript间隔未清除

我有一个相当复杂的页面,有很多ajax调用和后续的dom操作.在一个特定的调用中,它设置一个具有时间限制的间隔(基本上是一个计时器).我已经在clearInterval()任何地方设置,甚至在功能中,但在非常特殊的用例中(它很复杂,我无法确定重现缺陷的确切原因和步骤).

$(function() {
  window.timer_interval; 
  // ...
})
function timer()
{
    var current = 0; 
    time_limit = 60;                                
    window.timer_interval = setInterval(function() {
        minute = ( "0" +  Math.round(Math.floor((time_limit - current)/60))).slice(-2); 
        seconds = ("0" + ((time_limit - current)%60)).slice(-2); 

        $('#timer').html(minute + ":" + seconds);

        if (current >= time_limit) {
            clearInterval(window.timer_interval); 
            window.timer_interval = false; 
        }
        current = current + 1; 
    }, 1000);
}
Run Code Online (Sandbox Code Playgroud)

我已经使用了firbug来检测它的值window.timer_interval,它是false甚至条件都满足.一件事可能是一些图像传输失败(这是可能的应用程序行为,代码写入优雅地降级).我在Mozilla开发.

html javascript browser jquery

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