小编Mat*_*rts的帖子

如何根据用户输入动态构建和返回linq谓词

对此有点困惑.基本上我有一个方法,我想返回一个谓词表达式,我可以用作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)

我需要这种分离,以便我可以将我的谓词传递到我的存储库并在其他地方使用它.

.net c# linq

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

在可信的div中保持光标位置

首先,这类似于:

在IE中编辑iframe内容 - 维护文本选择的问题

如何使用html子元素在contenteditable div中获得插入位置?

基本上,我正在写一些类似于推特中的新推文编辑器.里面divcontentEditable设置,我解析的文字.当我发现我认为是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)

javascript dom

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

为MVC 5/Web API应用程序组合令牌和cookie auth

我有一个Web应用程序,其中包含:

  • 普通的MVC控制器 - 必须只使用cookie auth
  • 应用程序内部使用的Web API控制器(jquery调用等) - 也应该使用cookie auth
  • 外部使用的Web API控制器(例如,通过电话应用程序) - 必须使用令牌身份验证

现在,我已经设置了(身份)身份验证,以便它具有:

app.UseCookieAuthentication(...)为Web应用程序设置cookie auth; 并 app.UseOAuthBearerTokensapp.UseOAuthBearerAuthentication设置的基于令牌的事情的一面.

是否有可能确保事物的MVC方面不支持令牌,并且Web API方面支持令牌?由于某些Web API内容是内部的,有些是外部的,我想如果API端点支持cookie或令牌,我会很高兴.

谢谢.

asp.net authentication asp.net-mvc web asp.net-web-api

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

Azure webjob - 正常关闭队列处理功能

我有一堆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分钟后再次发送电子邮件.

救命!

azure azure-webjobs

8
推荐指数
0
解决办法
335
查看次数

如何从解决方案中完全删除TFS绑定?

我们有很多项目的大型解决方案.一些项目是外包的,供应商使用TFS.当他们进入我们的SVN仓库时,一些绑定仍然悬而未决.

当我打开sln时,VS2008说"无法找到与解决方案关联的源控制提供程序,是否要删除它们".我点击是,保存并退出,然后下次再次完成所有操作:)

那么 - 任何人都知道我如何一劳永逸地摆脱sln的任何TFS绑定?我是否需要手动搜索csproj文件以获取任何"scc"引用并删除?

谢谢!

tfs visual-studio

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

C#Domain Model + repository:放置加载实体的代码的位置

我有一个模型类,它从我的存储库类中的"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

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

使用Jekyll列出所有博客文章(包含内容)

我正在尝试展示杰基尔的前三篇博文.使用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标记.

jekyll

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

在MVC 4中使用自定义oauth提供程序的OAuth

我正在MVC 4中编写一个简单的Web应用程序,我想和Trello一起使用OAuth,以便我可以让用户使用他们的trello详细信息登录,然后查看他们的一些卡片.

任何人都可以提供有关创建自定义oauth提供程序的信息,以支持非开箱即用的oauth提供程序吗?从我所看到的,我认为我需要创建一个自定义的Oauth提供程序(子类IAuthenticationClient并使用它) - 是吗?

oauth asp.net-mvc-4 trello

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

Web API承载令牌 - 我可以使用自定义令牌吗?

我正在保护一个Web API站点,我想使用令牌.但是,我正在使用遗留数据库,其中有一个用户表,每个用户已经为它们创建了一个令牌并存储在表中.

我正在努力研究如果我可以使用Identity oAuth bearer token auth位,但是将它全部插入到我现有的数据库中,以便

  1. 授予令牌只会从db返回该用户的令牌
  2. 我可以通过在数据库中查找并从用户创建标识来验证令牌(我在站点的其他位置使用ASP.NET标识用于MVC方面)

如果可能的话,我无法解决,或者我是否应该放弃并使用标准的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)

c# authentication asp.net-web-api owin asp.net-identity

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

如何设置UserTokenProvider令牌过期

我们正在开发一个新的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);

获取令牌,然后发送.

c# asp.net asp.net-mvc asp.net-identity

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