小编Max*_*hen的帖子

覆盖AccessTokenExpireTimeSpan

是否可以覆盖自定义OAuthAuthorizationServerProvider上特定故障单的默认AccessTokenExpireTimeSpan?所有其他票证的默认到期时间为15分钟.

public public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    ...
    var ticket = new AuthenticationTicket(identity, properties);

    if (condition)
    {
        ticket.Properties.IssuedUtc = DateTime.UtcNow;
        ticket.Properties.ExpiresUtc = DateTime.UtcNow.AddDays(14);
    }

    context.Validated(ticket);
}
Run Code Online (Sandbox Code Playgroud)

条件== true的生成标记具有默认的到期时间(15分钟).我不想更改context.Options.AccessTokenExpireTimeSpan,因为它影响所有令牌,这不是主意.

oauth-2.0 asp.net-web-api2

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

在Visual Studio 2015中同步时使用rebase

我正在使用Visual Studio 2015和Git.当我需要推送我的提交时,我使用fetch和rebase在推送之前合并新的提交.这是我的公司默认策略,在没有连接合并的情况下保持历史清晰.

是否可以将Visual Studio 2015团队资源管理器的同步功能配置为在拉时使用rebase?在Git配置中可以设置pull使用rebase而不是默认合并,但Visual Studio Sync似乎使用另一种配置.

git git-rebase visual-studio-2015

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

Npgsql与Entity Framework Code First的集成

我有一个项目使用最新版本的EF CF与PostgreSQL和Npgsql.

我的模型看起来像:

[Table("mytable")]
public class MyTable
{
    [Column("id")]
    public int Id { get; set; }
    [Column("mycolumn")]
    public string MyColumn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而数据库/表/列的小写名称如下:

CREATE TABLE mytable
{
    id serial,
    mycolumn character(50)
}
Run Code Online (Sandbox Code Playgroud)

Npgsql使用引号生成SQL命令,因此我必须使用由于PostgreSQL特性引起的数据注释,这很烦人.但是我想在数据库中不使用引号分隔名称.

有没有办法在生成命令时强制Npgsql不包含引号或在生成的SQL中强制使用小写表/列名称?

entity-framework npgsql

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

索赔最佳实践

Microsoft 默认登录系统使用 ClaimTypes.Name 来存储电子邮件,使用 ClaimTypes.NameIdentifier 来存储用户的 UID(以及用于附加控制的 SecurityStamp)。其他一些示例使用 ClaimTypes.Name 来存储用户的全名。我知道我可以按照自己的意愿使用自定义登录系统,但由于我想避免重新发明轮子,所以我有一些问题如下:

  1. NameIdentifier、Sid、PrimaryId 的目的是什么?
  2. 姓名与(名+姓)的目的是什么?
  3. 我应该将登录电子邮件地址放入 ClaimTypes.Email 中吗?
  4. 如果是自定义用户名(不是电子邮件地址),我应该创建一个自定义声明,例如“用户名”吗?

.net claims-based-identity owin

6
推荐指数
0
解决办法
182
查看次数

用另一个覆盖授权过滤器

CustomAuthorizeAttribute我的Web Api项目中定义了默认值.

config.Filters.Add(new CustomAuthorizeAttribute());
Run Code Online (Sandbox Code Playgroud)

但是我有一个特殊的控制器,我想使用一个SpecialAuthorizeAttribute.

[SpecialAuthorize]
public class MySpecialController : ApiController
Run Code Online (Sandbox Code Playgroud)

在Asp.Net vNext中,我们有一个新属性来覆盖默认过滤器,但是如何让它在Web Api 2中工作呢?

编辑1:

一种可能的(但不是理想的)解决方案是使CustomAuthorizeAttribute检查Controller或Action范围内是否有另一个AuthorizeAttribute.在我的情况下,我只有SpecialAuthorizeAttribute所以:

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        if (actionContext.ControllerContext.ControllerDescriptor.GetCustomAttributes<SpecialAuthorizeAttribute>().Any() || actionContext.ActionDescriptor.GetCustomAttributes<SpecialAuthorizeAttribute>().Any())
        {
            return;
        }
        base.OnAuthorization(actionContext);
    }

    public override System.Threading.Tasks.Task OnAuthorizationAsync(System.Web.Http.Controllers.HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken)
    {
        return base.OnAuthorizationAsync(actionContext, cancellationToken);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# authorize-attribute asp.net-mvc-filters asp.net-web-api2

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

使用Gulp删除源映射

我正在使用Gulp和Bower将JQuery引入我的项目中.但是,jquery.min.cs文件在预编译文件的末尾有一个SourceMappingURL,我想删除它.

目前我的Gulp只是将原始文件复制到目的地:

gulp.task('jquery', function () {
    gulp.src(paths.jquerySrc)
        .pipe(gulp.dest(paths.jqueryDest));
});
Run Code Online (Sandbox Code Playgroud)

我找到了很多方法来添加源映射但没有删除.我不想为此重新编译所有的jquery.

jquery bower gulp

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

无法确定关联的主要结束

在这种关联中,我得到错误"无法确定类型'Foo'和'Bar'之间关联的主要结束.必须使用关系流畅API或数据注释显式配置此关联的主要结尾. "

public class Foo
{
    public int Id { get; set; }

    public int? MainBarId { get; set; }
    public virtual Bar MainBar { get; set; }

    [InverseProperty("Foo")]
    public virtual ICollection<Bar> Bars { get; set; }
}

public class Bar
{
    public int Id { get; set; }

    public int FooId { get; set; }
    public virtual Foo Foo { get; set; }

    public int? OldFooId { get; set; }
    public virtual Foo OldFoo { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

entity-framework

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

在Git中提交之前解决冲突

我是从SVN来到Git.在SVN中,当两个开发人员同时更改同一个文件(来自同一个文件版本)时,最后一个提交者将在提交更改之前获得要解决的冲突标志.在Git中,常见的方法是最后一个提交者/推送器将解决冲突并生成第3个提交,然后推送原始提交和合并提交.

是否可以在进行本地提交之前合并服务器更改,然后以SVN样式进行单个提交(无冲突)?为了简化,假设两个开发人员都使用master的本地副本而不是其他分支.

我知道这是一个重复的话题,但大多数都不明白.

git

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

正确的RESTful动词

我有一个带条件操作的资源:

/foos/{id}/authorize
/foos/{id}/cancel
Run Code Online (Sandbox Code Playgroud)

这个想法是授权会将资源的状态从保存(默认)更改为授权(由第三方应用程序).授权可以从远程部分返回错误或者可以被授权.一旦授权,资源就无法再次被授权,因此这不是可以一次又一次调用的动作.

撤消授权资源时会发生取消.一旦取消,资源将永久保留.

考虑到此操作不安全并且不能被视为幂等因为第二次调用会返回"资源已被取消"这样的错误并且同时我不创建这种操作的RESTful世界中正确的动词是什么一个新资源,只是在已知资源中进行状态更改?

rest

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

使用unaccent查询带有Npgsql和Entity Framework的PostgreSQL

是否可以使用Npgsql和Entity Framework 6来查询PostgreSQL忽略重音?在Play SQL中,可以使用unaccent扩展,并且可以使用也基于unaccent的索引进行索引:

select * from users where unaccent(name) = unaccent('João')
Run Code Online (Sandbox Code Playgroud)

在以前使用MySql的项目中,我可以使用像utf8_swedish_ci这样的排序规则重音不敏感来解决这个问题,但据我所知,PostgreSQL缺乏这种解决方案.

postgresql npgsql entity-framework-6

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

控制台应用程序中的异步

在此示例代码中,代码以同步方式运行.为什么任务阻止DoIndependentWork()而不是仅阻止webTask.Result?我知道我可以使用Task.Run()和其他东西,但我正在尝试理解异步并等待更好一点.

static void Main(string[] args)
{
    var webTask = AccessTheWebAsync();
    DoIndependentWork();
    Console.WriteLine("AccessTheWebAsync result: {0}", webTask.Result);

    Console.ReadLine();
}

static async Task<int> AccessTheWebAsync()
{
    HttpClient client = new HttpClient();

    Thread.Sleep(5000);

    Console.WriteLine("AccessTheWebAsync in Thread {0}", Thread.CurrentThread.ManagedThreadId);

    var urlContents = await client.GetStringAsync("http://msdn.microsoft.com");

    return urlContents.Length;
}

static void DoIndependentWork()
{
    Console.WriteLine("DoIndependentWork in Thread {0}", Thread.CurrentThread.ManagedThreadId);
}
Run Code Online (Sandbox Code Playgroud)

c# asynchronous

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

Angular $ http没有处理错误

我的角度应用程序不处理$ http调用中的错误.

我有一个$httpProvider$q.reject(response)在errorResponse中返回的文档所需的位置.在控制台中角度刚刚放置angular.min.js:99 GET http://localhost:8080/my/api 500 (Internal Server Error).

console.log('before');
$http.get('/my/api', function(response){
   console.log('ok');
   console.log(response);
}, function(response){
    console.log('not ok');
    console.log(response)
});
console.log('after');
Run Code Online (Sandbox Code Playgroud)

我只是得到'之前','之后'和上面的信息.

同样在网络选项卡中,我从服务器获得预期响应,状态为500,正文中包含json内容.

除了没有返回$ q.reject()的$ httpProvider的errorResponse,可能是什么问题?

asynchronous promise angularjs angularjs-http angular-promise

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

使用DataContractJsonSerializer自定义DateTime序列化/反序列化

如何DateTime使用对象图中的DataContractJsonSerializer所有DateTime属性将默认的JSON 序列化/反序列化更改为自定义格式?

Json.Net库处理这个,但我不能在这个项目中使用它.

我试过IDataContractSurrogate但我无法访问DateTimes的值 - >字符串转换.

模型和预期的JSON是:

[DataContract]
public class Client
{
    [DataMember(Name = "id")]
    public int Id {get; set; }
    [DataMember(Name = "name")]
    public string Name {get; set; }
    [DataMember(Name = "contacts")]
    public IList<Contact> Contacts {get; set; }
    [DataMember(Name = "created")]
    public DateTime Created {get; set; }
    [DataMember(Name = "changed")]
    public DateTime Changed {get; set; }
}

[DataContract]
public class Contact
{
    [DataMember(Name = "name")]
    public string Name {get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# serialization json deserialization

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