小编MrD*_*per的帖子

使用configSource转换包含的配置文件

这个问题有点像两个人.在VS2015中,我的MVC项目有多种不同的构建配置,Test,UAT,Live等.web.config我可以直接右键单击它并选择Add Config Transform为每个构建配置创建转换文件.

如果我有一个外部配置文件,例如Log4Net.config如何配置它以具有相关的转换web.config?这是通过编辑project.csproj文件手动完成的吗?

其次,我有一个web.config文件:

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, Log4net" />
    </configSections>

    ...

    <log4net configSource="Log4Net.config" />
</configuration>
Run Code Online (Sandbox Code Playgroud)

当我构建项目时,会web.config自动通过project.csproj文件中的以下AfterBuild目标进行转换:

<Target Name="AfterBuild">
    <TransformXml Source="Web.config"
            Transform="Web.$(Configuration).config"
            Destination="$(OutputPath)\$(AssemblyName).config" />
</Target>
Run Code Online (Sandbox Code Playgroud)

如何Log4Net.config使用相同的配置转换转换包含的文件?我意识到我可以将另一个TransformXml放入AfterBuild目标中,但是这是进行此转换的正确方法,还是我错过了什么?

c# asp.net-mvc web-config visual-studio web-config-transform

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

分布式系统中基于声明的访问控制

我正在努力使自己在分布式系统中使用基于声明的访问控制,以及如何以及在何处进行管理。我还认为我对身份验证服务发出的声明和授权服务发出的声明感到困惑,因此,我感谢提供任何建议以帮助我解决这一问题。

情境

我有一个受信任的联合身份验证服务器,用于多个微站点的单点登录。每个微型站点都有特定的用途。例如,一个产品门户(用于创建和管理产品)和一个计费门户(用于创建,查看和支付发票)。

该系统由许多人使用:对整个系统有完全控制权的管理员。内部财务部门仅与计费门户有关。同样,内部产品团队仅对产品门户感兴趣。最后是一个需要访问两个门户但没有任何后端许可的客户。

联合身份验证

据我了解,当用户成功通过联合身份验证服务器进行身份验证时,联合身份验证服务器会向发出请求的微站点提供有关该用户身份的声明。这些主张可能包括:

  • 用户电子邮件地址: bob@example.com
  • 用户名: Bob
  • 用户类型: Product team
  • 与用户身份有关的任何其他事项

它没有提供任何与该人可以做什么相关的信息(这可能是我的第一个误解)。请注意,user type实际上是对角色的要求。这个术语正确吗?在这种情况下,索赔与许可索赔是否不同?

微型网站授权

用户通过身份验证后,微型站点需要知道允许该用户执行的操作。将网站移交给user type(这是对版权的声明),我更喜欢使用基于声明的方法。这样可以为权限提供更好的粒度。例如:

  • 鲍勃应该可以编辑价格,但不能创建产品。
  • Bill(同样在产品小组中)应该只能添加产品。
  • 本应只允许删除产品。
  • 爱丽丝(财务)应该没有权限。

通过使用声明,可以使微型网站具有更大的灵活性来授予特定的权限,就像使用滚动一样。

问题

  • 这些关于允许动作的声明应存储在哪里?
  • 如果每个微型提供它自己的federation identity至- microsite claim地图服务?
  • 每个微型站点都应缓存这些声明吗?如果Bob从产品团队转到财务团队该怎么办?

我问的原因是因为我们在开发部门进行了辩论,而我们最资深的开发人员认为,联合服务器应该提供每个微型站点所需的所有声明。在我看来,这似乎将联邦服务紧密地耦合到每个微型站点。

c# architecture authentication authorization claims-based-identity

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

字符在字符串数组中出现的最大出现次数

在C#中,给出了数组:

string[] myStrings = new string[] {
  "test#test",
  "##test",
  "######", // Winner (outputs 6)
};
Run Code Online (Sandbox Code Playgroud)

如何找到字符#在单个字符串中出现的最大出现次数?

我目前的解决方案是:

int maxOccurrences = 0;
foreach (var myString in myStrings)
{
    var occurrences = myString.Count(x => x == '#');
    if (occurrences > maxOccurrences)
    {
        maxOccurrences = occurrences;
    }
}

return maxOccurrences;
Run Code Online (Sandbox Code Playgroud)

使用可直接作用于myStrings[]阵列的linq是一种简单的方法吗?

这可以成为一个可以在任何方面工作的扩展方法IEnumerable<string>吗?

c# linq extension-methods

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

查看 Azure 服务总线死信的应用程序

我一直在网上和 GitHub 上寻找 Azure 服务总线的现成死信查看器。这是为了让我们的 DevOps 团队能够监控、查看和报告我们总线上每个主题的每个订阅的任何死信。

我认为这将是分发给 DevOps 的常见应用程序,因此相信已经有一个应用程序。因此,在我开始使用我自己的 Windows 窗体应用程序之前,是否有我可能错过的现有查看器?

azure dead-letter azureservicebus

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

Azure 表存储异常处理

当处理一个Microsoft.WindowsAzure.Storage.StorageException通过Azure的表存储提出,有没有确定是什么错误没有查询的方式HTTPStatusCodeErrorCode。例如,当尝试插入重复实体时,Azure 会引发以下问题:

HTTP状态代码:409

错误代码:“EntityAlreadyExists”

是否有这些错误代码的枚举,我可以打开而不是直接查询 (int)HTTPStatusCode和 (string) ErrorCode

c# exception-handling azure azure-table-storage

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

c#条件OrderBy

我有一个Article具有以下结构的实体

public class Article
{
    public decimal Price {get;set;}
    public decimal? SalePrice {get;set;}
    public bool OnSale {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是按照以下标准按价格查询文章:如果文章正在销售,请拿它的销售价格,如果没有,请按正常价格.

举个例子:

  • 文章A(OnSale = True,价格= 10,SalePrice = 5)
  • B条(ONSale = False,Price = 4,SalePrice = NULL)
  • C条(OnSale = False,价格= 22,SalePrice = 10)

按价格订购时,订单应该是

B(价格4)

A(价格5) - 导致它的销售价格

C(价格22)

我试过了

IQueryable<Article> articlesQuery = dal.Where<Article>(m => m.Active);
articlesQuery = articlesQuery.OrderBy(m => m.OnSale ? m.PriceSale : m.PriceSale);
Run Code Online (Sandbox Code Playgroud)

但它没有给出理想的结果.

任何帮助表示赞赏.

c# linq lambda linq-to-sql

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