过去一周我一直在用正则表达式做一些工作并且取得了很大的进步,但是,我仍然相当n00b.我有一个用C#编写的正则表达式:
string isMethodRegex =
@"\b(public|private|internal|protected)?\s*(static|virtual|abstract)?"+
@"\s*(?<returnType>[a-zA-Z\<\>_1-9]*)\s(?<method>[a-zA-Z\<\>_1-9]+)\s*\"+
@"((?<parameters>(([a-zA-Z\[\]\<\>_1-9]*\s*[a-zA-Z_1-9]*\s*)[,]?\s*)+)\)";
IsMethodRegex = new Regex(isMethodRegex);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当调用正则表达式IsMethodRegex.IsMatch()时,它会在以下字符串上挂起30秒以上:
"\t * Returns collection of active STOP transactions (transaction type 30) "
Run Code Online (Sandbox Code Playgroud)
有没有人如何使用正则表达式的内部工作以及为什么在匹配此字符串而不是其他字符串时这将是如此之慢.我玩过它,发现如果我取出*和括号,那么它运行正常.也许正则表达式写得不好?
任何帮助都会非常感激.
我需要开发一种解决方案,以便在AWS中安全地存储对称和非对称密钥.这些密钥将由EC2和Lambdas上运行的应用程序使用.应用程序需要设置策略,以允许应用程序或lambda将密钥从密钥库中提取出来.密钥存储还应该管理密钥到期,在密钥到期时通知各个人.初始密钥交换是在我公司与其合作伙伴之间进行的,这意味着我们可能拥有密钥对的公钥或私钥,具体取决于数据传输方向.
我们已经看过KMS但是从我所看到的KMS不支持非对称密钥.我也在网上看到有些人正在使用S3(受KMS保护)或参数存储来存储密钥,但这并没有解决密钥管理的问题.
你们对此有什么想法吗?甚至是SaaS/PaaS建议?
amazon-ec2 public-key-encryption amazon-web-services aws-lambda aws-kms
我正在撕掉我的头发,我有一个WCF服务,我可以通过浏览器调用它工作正常,当我从Web应用程序使用以下方法调用它时,我得到(401)未经授权的错误.并且该服务不会被调用.更重要的是,当我从本地计算机运行我的Web应用程序(使用IIS Express的调试模式)指向我的开发服务器(IIS7)时它可以工作,但是当我将我的Web应用程序部署到开发服务器并将其指向开发服务器服务时没有401错误.我认为这与IIS7有关,但我不是百分百肯定,而且帮助会非常有用.
我已经在网上寻找答案,但到目前为止我发现的最好的是这个.
我的服务电话如下:
var request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/json; charset=utf-8";
request.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
request.Credentials = CredentialCache.DefaultCredentials;
WebResponse responce = request.GetResponse();
Stream reader = responce.GetResponseStream();
var sReader = new StreamReader(reader);
string outResult = sReader.ReadToEnd();
sReader.Close();
var result = (T) JsonConvert.DeserializeObject(outResult, typeof (T));
return result;
Run Code Online (Sandbox Code Playgroud)
我对服务的配置如下所示:
<service name="RGMPServices.Householding.Services.AccountService" behaviorConfiguration="Default">
<endpoint address="" kind="webHttpEndpoint" endpointConfiguration="SecuredHttpEndpointBinding" contract="RGMPServices.Householding.Contracts.IAccountService" />
</service>
<service name="RGMPServices.Householding.Services.HouseholdService" behaviorConfiguration="Default">
<endpoint address="" kind="webHttpEndpoint" endpointConfiguration="SecuredHttpEndpointBinding" contract="RGMPServices.Householding.Contracts.IHouseholdService" />
</service>
<service name="RGMPServices.Householding.Services.UserService" behaviorConfiguration="Default">
<endpoint address="" kind="webHttpEndpoint" …Run Code Online (Sandbox Code Playgroud) 我正在编写一个影响分析工具,它将解析一堆选定的文件类型,并在文件中找到类和方法调用(在本例中为.cs文件).我设法编写了一个正则表达式,可以找到一行代码是否为方法调用.
Regex re = new Regex(
@"\b(public|private|internal|protected)\s*" +
"(static|virtual|abstract)?\s*[a-zA-Z]*\s[a-zA-Z]+\s*" +
"\((([a-zA-Z\[\]\<\>]*\s*[a-zA-Z]*\s*)[,]?\s*)+\)");
Run Code Online (Sandbox Code Playgroud)
然而; 我无法弄清楚如何从正则表达式中获取方法名称.它将一行识别为匹配,但如何提取实际方法名称.对此的任何帮助都会很棒.
此外; 我不确定这是不是它实际上是如何完成的,但还有其他(最新的)c#文件解析器能够从文件中提供方法名称和类名列表吗?
我正在使用Ninject和AOP来做一些缓存.我有一个属性,我可以应用于我的存储库中的任何方法和BeforeInvoke它将返回我的缓存对象,如果有一个和AfterInvoke创建一个缓存的对象.这一切都很好,但我无法弄清楚如何停止调用初始方法,即如果有一个缓存的对象返回而不是调用intyercepted方法.我的拦截器在这里:
public class CacheInterceptor : SimpleInterceptor
{
protected override void BeforeInvoke(IInvocation invocation)
{
Type returnType = invocation.Request.Method.ReturnType;
string cacheKey = CacheKeyBuilder.GetCacheKey(invocation, serializer);
object cachedValue = cache.Get(cacheKey);
if (cachedValue == null)
{
invocation.Proceed();
}
else
{
object returnValue = serializer.Deserialize(returnType, cachedValue);
invocation.ReturnValue = returnValue;
returnedCachedResult = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使在else语句中我显然没有说要调用被调用的方法'invocation.Proceed();' 它仍然会调用它.如何告诉ninject只返回invocation.ReturnValue?
c# ×4
regex ×2
amazon-ec2 ×1
aop ×1
aws-kms ×1
aws-lambda ×1
iis-7 ×1
interception ×1
ninject ×1
parsing ×1
performance ×1
wcf ×1