对此有点困惑.基本上我有一个方法,我想返回一个谓词表达式,我可以用作Where条件.我认为我需要做的是类似于:http://msdn.microsoft.com/en-us/library/bb882637.aspx但我对我需要做的事情有点困惑.
方法:
private static Expression<Func<Conference, bool>> GetSearchPredicate(string keyword, int? venueId, string month, int year)
{
if (!String.IsNullOrEmpty(keyword))
{
// Want the equivilent of .Where(x => (x.Title.Contains(keyword) || x.Description.Contains(keyword)));
}
if (venueId.HasValue)
{
// Some other predicate added...
}
return ??
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
var predicate = GetSearchPreducate(a,b,c,d);
var x = Conferences.All().Where(predicate);
Run Code Online (Sandbox Code Playgroud)
我需要这种分离,以便我可以将我的谓词传递到我的存储库并在其他地方使用它.
首先,这类似于:
如何使用html子元素在contenteditable div中获得插入位置?
基本上,我正在写一些类似于推特中的新推文编辑器.里面div有contentEditable设置,我解析的文字.当我发现我认为是URL的时候,我将该文本删除并输入<a>div内的标签(例如输入的信息go to www.google.com变为Go to <a href='..'>www.google.com</a>.但是,当我这样做时,插入位置会丢失.
使用@Tim-Down在其他SO帖子中的建议只有在您不编辑DOM时才会起作用(正如他所说).我正在编辑DOM,因此插入位置丢失了.
是否有可能(理想情况下不使用引用的Rangy库)通过处理当前代码来实现这一点.
我目前的代码(来自其他SO帖子):
var saveSelection, restoreSelection;
if (window.getSelection) {
// IE 9 and non-IE
saveSelection = function(win) {
var sel = win.getSelection(), ranges = [];
if (sel.rangeCount) {
for (var i = 0, len = sel.rangeCount; i < len; ++i) {
ranges.push(sel.getRangeAt(i));
}
}
return ranges;
};
restoreSelection = function(win, savedSelection) {
var sel = win.getSelection();
sel.removeAllRanges();
for …Run Code Online (Sandbox Code Playgroud) 我有一个Web应用程序,其中包含:
现在,我已经设置了(身份)身份验证,以便它具有:
app.UseCookieAuthentication(...)为Web应用程序设置cookie auth; 并
app.UseOAuthBearerTokens和app.UseOAuthBearerAuthentication设置的基于令牌的事情的一面.
是否有可能确保事物的MVC方面不支持令牌,并且Web API方面支持令牌?由于某些Web API内容是内部的,有些是外部的,我想如果API端点支持cookie或令牌,我会很高兴.
谢谢.
我有一堆webjob队列处理函数:
public static void ProcessSomething(
[QueueTrigger("testrequest")] TestThing thing,
TextWriter logger,
CancellationToken token)
Run Code Online (Sandbox Code Playgroud)
我对优雅的关机感到困惑.所以 - 当您关闭webjob(或重新部署到它)时,它允许当前处理webjob运行并完成 - 默认情况下,您的Queue处理程序有5秒钟完成.CancellationToken如果您的webjob可能需要更长的时间,您可以将方法传入方法以检查取消请求,如本文"优雅关闭"部分所述.
好的,但奇怪的是我发现当Queue处理程序在关闭期间运行时,令牌已经IsCancellationRequested设置了,但即使函数在内部完成,比如一秒,那么该队列项也被标记为"从未完成",并且在10分钟内(在该队列项目的租用时间到期之后),它返回队列.
这是设计的吗?我可以改变这种行为吗?例如,如果您的队列处理程序正在发送电子邮件,并且它在关闭期间被触发,那么它将发送电子邮件,然后标记为从未完成,然后在10分钟后再次发送电子邮件.
救命!
我们有很多项目的大型解决方案.一些项目是外包的,供应商使用TFS.当他们进入我们的SVN仓库时,一些绑定仍然悬而未决.
当我打开sln时,VS2008说"无法找到与解决方案关联的源控制提供程序,是否要删除它们".我点击是,保存并退出,然后下次再次完成所有操作:)
那么 - 任何人都知道我如何一劳永逸地摆脱sln的任何TFS绑定?我是否需要手动搜索csproj文件以获取任何"scc"引用并删除?
谢谢!
我有一个模型类,它从我的存储库类中的"GetById"方法加载.我现在需要向此实体添加其他属性,这些属性不保存在数据库中,而是由服务类计算.就像是:
public class MyEntity
{
public int ThingId { get; set; };
public string ThingName { get; set; }
// Set from the service
public int WooFactor { get; set; }
}
public class WooFactorGenerator
{
public int CalculateWooFactor(MyEntity thing); // Hits other services and repo's to eventually determine the woo factor.
}
// Code to get a "MyEntity":
var myEntity = repo.GetById(1);
var gen = new WooFactorGenerator();
myEntity.WooFactor = gen.CalculateWooFactor(myEntity);
Run Code Online (Sandbox Code Playgroud)
因此,为了加载/饱和MyEntity对象,我需要从db加载,然后调用生成器来确定"woo factor"(ahem).这段代码应该从架构的角度来看?目前的想法:
1)在存储库中:如果我在这里添加它,我觉得我对repo负有太多责任.
2)在"MyEntity"课程中.在这里添加代码,可能在访问WooFactor时延迟加载WooFactor.这会给MyEntity增加很多依赖.
3)一个单独的服务类 - 似乎有点过分和不必要.
c# architecture domain-driven-design repository-pattern cqrs
我正在尝试展示杰基尔的前三篇博文.使用Jekyll引导程序,我看到有一个帖子(布局和底层主题页面)的布局 - 我想要做的是为每个帖子重复帖子布局..类似于:
{% for post in site.posts %}
-- Render the post layout for this post.
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我不知道如何在不必复制帖子布局的内容的情况下如何做到这一点,并将其添加到for循环中,或者创建一个JB include,它仍然无法解决问题'我仍然会有复制并粘贴post html标记.
我正在保护一个Web API站点,我想使用令牌.但是,我正在使用遗留数据库,其中有一个用户表,每个用户已经为它们创建了一个令牌并存储在表中.
我正在努力研究如果我可以使用Identity oAuth bearer token auth位,但是将它全部插入到我现有的数据库中,以便
如果可能的话,我无法解决,或者我是否应该放弃并使用标准的HTTP处理程序方法.到目前为止,这是我相当标准的代码,它只发布标准令牌,而不是我想要使用的现有代码.
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
var bearerAuth = new OAuthBearerAuthenticationOptions()
{
Provider = new OAuthBearerAuthenticationProvider()
};
app.UseOAuthBearerAuthentication(bearerAuth);
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
var manager = new UserManager<User, long>(new …Run Code Online (Sandbox Code Playgroud) 我们正在开发一个新的ASP.NET MVC 4.1应用程序.我们正在连接ASP.NET身份的东西,我们正在努力使用令牌进行密码重置和新邀请.我似乎无法找到一种方法来设置生成的令牌的到期时间,并且默认情况下似乎设置为大约10分钟.我们使用a EmailTokenProvider作为用户令牌提供程序,因为它似乎与用户的安全戳一起使用.
我们如何设置令牌的到期时间 - 理想情况下,我们希望为邀请设置不同的重置密码令牌.
我们的用户管理器如下所示:
var manager = new UserManager<User, long>(new UserStore(new UserRepository()));
manager.UserValidator = new UserValidator<User, long>(manager) {AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true};
manager.UserTokenProvider = new EmailTokenProvider<User, long>();
Run Code Online (Sandbox Code Playgroud)
当用户请求重置密码链接时,我们会调用
var token = await _userManager.GeneratePasswordResetTokenAsync(user.Id); 获取令牌,并将其传递给用户.
当用户被邀请时,我们会致电:
var token = await _userManager.GenerateUserTokenAsync("FirstLogin", user.Id);
获取令牌,然后发送.