小编Tru*_*ill的帖子

如何制作 React App windows 身份验证

Web API 已在 .Net 中使用 Windows 身份验证创建。当我在 React APP 中调用 API 时得到 401 Unauthorized。Web API 在具有 Windows 身份验证的浏览器中工作正常。

axios.get('http://.../.../user/Data')
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });```
Run Code Online (Sandbox Code Playgroud)

.net windows-authentication reactjs axios

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

确保已使用REST代理从Kafka主题读取了所有消息

我是Kafka的新手,我们的团队正在研究服务间通信的模式。

目标

我们有两个服务,P(生产者)和C(消费者)。对于C所需的一组数据,P是真理的源头。C启动时,需要将所有当前数据从P加载到其缓存中,然后订阅更改通知。(换句话说,我们要在服务之间同步数据。)

数据总量相对较低,并且更改很少。短暂的同步延迟是可以接受的(最终一致性)。

我们希望解耦服务,以便P和C不需要彼此了解。

提案

当P启动时,它将所有数据发布到启用了日志压缩的Kafka主题。每个消息都是其ID为键的聚合

C启动时,它将从主题的开头读取所有消息,并填充其缓存。然后,它继续从其偏移量读取数据,以通知更新。

当P更新其数据时,它将为已更改的聚合发布一条消息。(此消息与原始消息具有相同的架构。)

C收到新消息时,将更新其缓存中的相应数据。

在此处输入图片说明

约束条件

我们正在使用Confluent REST代理与Kafka进行通信。

问题

当C启动时,如何知道何时从该主题读取了所有消息,以便可以安全地开始处理?

如果C没有立即注意到P第二秒钟发送的消息,这是可以接受的。如果C在消费一个小时前发送的消息之前开始处理,这是不可接受的。请注意,我们不知道何时更新P的数据。

我们不希望C在消耗每条消息之后不必等待REST代理的轮询间隔。

apache-kafka microservices kafka-rest

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

依赖注入Sql连接?

首先,我开始使用StructureMap,但任何DI框架中的示例都可以.

我有一个班级,

public class GeoData
{
   public List<Country> GetCountries()
   {
      IDbConnection con = new SqlConnection(ConfigurationManager.ConnectionString["GeoDataConnection"])    
      //Sql stuff to return countries from a database
   }
}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的视图,看看这个类实际上是什么样子,但基本上就是这样.

现在,我有了新的要求.我需要能够在类初始化或方法上更改连接字符串.例如

public void Do()
{
   var geoData = new GeoData();

   if(x)
   {
      geoData.ConnectionString = ConfigurationManager.ConnectionString["LIVEGeoDataConnection"]);
   }
   else
   {
      geoData.ConnectionString = ConfigurationManager.ConnectionString["STAGINGGeoDataConnection"]);
   }

   geoData.GetCountries();
}
Run Code Online (Sandbox Code Playgroud)

使用依赖注入是否有更好的解决方案?您如何使用您选择的DI框架执行此操作?

c# sql dependency-injection

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

如何找到N的补数?

我想找到9的数字补码但失败了.

我尝试了1和2的补充方法,但没有效果.

找出N的数字补码的常用方法是什么?

algorithm bit-manipulation

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

将该点后的位数设置为double

在c#double类型中如何设置点后的位数,我只需要4.谢谢.

c# double types

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

通用的BehaviorExtensionElement是否可行?

我有一些我想要注册的WCF服务的服务行为; 没有配置.我想我每次都可以通过使用泛型来跳过创建一个BehaviorExtensionElement后代:

public class SimpleBehaviorExtensionElement<TBehavior> : BehaviorExtensionElement
    where TBehavior: new()
{
    protected override object CreateBehavior()
    {
        return new TBehavior();
    }

    public override Type BehaviorType
    {
        get { return typeof(TBehavior); }
    }
}
Run Code Online (Sandbox Code Playgroud)

在Web.config中:

<behaviorExtensions>
  <add name="myBehavior2"
    type="WcfService1.SimpleBehaviorExtensionElement`1[[WcfService1.MyBehavior,
      WcfService1]], WcfService1"/>
</behaviorExtensions>
Run Code Online (Sandbox Code Playgroud)

WcfService1.MyBehavior存在,实现了IServiceBehavior,并且已经过测试.

但是当我在配置文件的行为部分中引用<myBehavior2 />时,我得到:

为system.serviceModel/behavior创建配置节处理程序时发生错误:无法将扩展元素"myBehavior2"添加到此元素.验证扩展是否已在system.serviceModel/extensions/behaviorExtensions的扩展集合中注册.参数名称:element

如果我创建一个非泛型的BehaviorExtensionElement后代,我可以做的一切都有效.但现在它让我烦恼.;)

c# generics configuration wcf

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

无阻碍客户端验证错误

我正在使用asp.net mvc 3,我一直收到以下错误.

不显眼的客户端验证规则中的验证类型名称必须是唯一的.以下验证类型不止一次出现:数字

我不知道我有这个

@Html.TextBoxFor(x => x.Mark)
Run Code Online (Sandbox Code Playgroud)

//我的viewmodel

   [Required(ErrorMessage = "Message")]
        [Number(ErrorMessage = "Message")]
        public decimal Mark { get; set; }
Run Code Online (Sandbox Code Playgroud)

如果我将它从小数改为字符串,它将不会抱怨.到底是怎么回事?

编辑

我认为正是因为这个 [Number(ErrorMessage = "Message")]注释.我正在使用此库数据注释扩展

似乎并不是说我使用小数.谁知道为什么?

c# asp.net-mvc asp.net-mvc-3

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

签入TFS时会出现.csproj.user问题

我们错误地允许将.csproj.user文件签入TFS,因此我们可以设置"启动外部程序"默认值.这种方法效果很差,特别是在分支时.

现在我们试图撤消这个.

如果我删除项目的.csproj.user文件,然后尝试设置新的项目调试属性,我得到:

TF14050:无法更改项目$/xxx.csproj.user,因为它已经有一个不兼容的挂起更改.

如果我签入删除并进行更改,TFS会尝试重新添加我的.csproj.user文件.

我们如何为源代码管理中的现有项目解决此问题?

更新:

我认为摧毁它们是最好的选择; 不过,我们最终只是用TFS Power Tools删除了它们.诀窍是首先删除我们用于*.user 的源控制文件类型,即使它已被禁用.现在TFS似乎完全忽略了这些文件.

c# tfs projects-and-solutions tfs2010 csproj-user

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

使用Database.SetInitializer避免Shotgun手术

关于在何处拨打电话的规范答案Database.SetInitializerGlobal.asax针对网络项目.我正在寻找另一种选择.

我们正在使用Entity Framework 4.3.1和Code First.我们编写Web服务和WinForms应用程序,并且通常将数据访问代码(例如DbContexts)放在共享库中.

目前,我们的DbContext后代的构造函数如下所示:

public PricingContext(string connectionString)
    : base(connectionString)
{
    Database.SetInitializer<PricingContext>(null);
}
Run Code Online (Sandbox Code Playgroud)

95%的时间,这是正确的默认值.5%的时间(某些集成测试,绿地开发等)并非如此.

如果我们将该代码移动到我们的服务和应用程序的初始化(或配置)中,则向库中添加新的DbContext涉及Shotgun Surgery.即使库未直接公开上下文,也必须更新所有这些项目.

可选参数是一种可能性:

public PricingContext(string connectionString,
    IDatabaseInitializer<PricingContext> databaseInitializer = null)
    : base(connectionString)
{
    Database.SetInitializer<PricingContext>(databaseInitializer);
}
Run Code Online (Sandbox Code Playgroud)

但是,覆盖默认策略可能涉及将初始化程序传递给多个层.

我们还考虑创建一个基于反射的初始化器,它将所有上下文设置为特定策略.

什么是最佳做法?

c# entity-framework ef-code-first

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

单元测试Angular指令访问外部元素

我有一个自定义指令,它使用一个属性来指定它修改的另一个控件.

指令定义对象:

{
    restrict: 'E',
    templateUrl: 'myTemplate.html',
    scope: {
        targetId: '@'
    },
    controller: MyController,
    controllerAs: 'vm',
    bindToController: true
}
Run Code Online (Sandbox Code Playgroud)

指令控制器上的函数修改目标元素的内容(输入字段):

function onSelection (value) {
    var $element = $('#' + vm.targetId);

    $element.val('calculated stuff');
    $element.trigger('input');
}
Run Code Online (Sandbox Code Playgroud)

单元测试(Jasmine/Karma/PhantomJS)当前将元素附加到页面.这有效,但它似乎是一种代码味道.

beforeEach(inject(function($rootScope, $compile) {
    var elementHtml = '<my-directive target-id="bar"></my-directive>' +
        '<input type="text" id="bar">';

    scope = $rootScope.$new();    
    angularElement = angular.element(elementHtml);
    angularElement.appendTo(document.body);  // HELP ME KILL THIS!
    element = $compile(angularElement)(scope);
    scope.$digest();
}));

afterEach(function () {
    angularElement.remove();  // HELP ME KILL THIS!
});
Run Code Online (Sandbox Code Playgroud)

我试过重写控制器函数以避免jQuery; 这没有用.

如何修改指令或测试以消除appendTo/remove?

unit-testing angularjs angularjs-directive

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