小编Rob*_*man的帖子

使用 KeyValuePair 初始化字典

在包含许多不同类型的子对象的大对象的初始化中......

我有一个返回KeyValuePair<string, object>. 我想在初始化 a 时调用它Dictionary<string, object>,如下所示:

AdditionalProperties = new Dictionary<string,object>(ams.GetKVP(AvaloqTypes.Person.PersonDocm.CountryId))
Run Code Online (Sandbox Code Playgroud)

这会出现编译错误“无法从 KeyValuePair 转换为 IDictionary”

我可以按如下方式解决此问题:

AdditionalProperties = new Dictionary<string,object>()
{
    { ams.GetKVP(AvaloqTypes.Person.PersonDocm.DocmItem).Key,
      ams.GetKVP(AvaloqTypes.Person.PersonDocm.DocmItem).Value 
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,这意味着该GetKVP方法被调用两次。

有没有不涉及改变GetKVP方法的更好的解决方案?

c#

3
推荐指数
2
解决办法
6611
查看次数

devops 管道 yaml 忽略 DotNetCoreCLI@2 任务的失败测试

我有一个 devops yaml 管道,它运行 DotNetCoreCLI@2 任务来恢复、构建和测试。

如果一个或多个测试失败,我希望管道继续并发布为 DevOps 版本做好准备的输出。

最初,如果测试失败,整个管道执行将报告“构建失败”。在构建管道 yaml 的顶部添加以下内容后:

  jobs:
  - job: Build
    continueOnError: true
Run Code Online (Sandbox Code Playgroud)

我现在得到“构建部分成功”。

但是,当我检查管道执行摘要页面时,我发现有 0 个工件:

在此输入图像描述

即使测试失败,如何使管道发布?

为了完整起见,完整的 yaml 如下

    stages:
- stage: Build
  jobs:
  - job: Build
    continueOnError: true

    pool:
      name: Hosted Windows 2019 with VS2019
      demands:
      - msbuild
      - visualstudio

    variables:
      solution: '**/*.sln'
      projects: '**/Interfaces.Avaloq.Presentation.AzureFunctions.csproj'
      unitTestProjects: '**/*Testing.Unit*/*.csproj'
      integrationTestProjects: '**/*Testing.Integration*/*.csproj'
      buildPlatform: 'Any CPU'
      buildConfiguration: 'Debug'

    steps:
    - script: |
    - task: DotNetCoreCLI@2
      displayName: Restore Functions
      inputs:
        command: restore
        projects: '$(projects)'
        feedsToUse: config
        nugetConfigPath: …
Run Code Online (Sandbox Code Playgroud)

yaml .net-core azure-devops azure-pipelines azure-pipelines-yaml

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

派生列编辑器

我需要将格式化日期分配给数据流中的列.我添加了一个派生形状,并为新列输入了以下表达式 - 派生列="添加为新列":

"BBD" + SUBSTRING((DT_WSTR,4)DATEADD("Day",30,GETDATE()),1,4) + 
SUBSTRING((DT_WSTR,2)DATEADD("Day",30,GETDATE()),6,2) + 
SUBSTRING((DT_WSTR,2)DATEADD("Day",30,GETDATE()),9,2)
Run Code Online (Sandbox Code Playgroud)

问题是派生列转换编辑器自动分配数据类型Unicode string[DT_WSTR]和长度"7".但是,字符串的长度为11,因此每次抛出以下异常:

[Best Before Date [112]] Error: The "component "Best Before Date" (112)" failed 
because truncation occurred, and the truncation row disposition on "output column
"Comments" (132)" specifies failure on truncation. A truncation error occurred 
on the specified object of the specified component.
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么编辑坚持7长度?我似乎无法改变这一点.

非常感谢,

抢.

ssis

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

C#将字符串格式化为日期

我有一个DetailsView与TextBox绑定到DateTime列.列的值以"dd/mm/yyyy hh:mm:ss"格式显示.我需要它以"yyyy/mm/dd"格式显示.虽然我有最好的方法可能是格式化DataBound事件中的字符串.问题是,我似乎无法找到将字符串格式化为日期的方法.String.Format不会这样做.如果我将字符串作为DateTime,那么我可以使用DateTime.Format方法.我可以通过解析字符串的各种元素来创建一个datetime变量,但我不禁想到必须有一个更简单的方法吗?

谢谢

抢.

c# datetime string-formatting

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

EF 6 - 无效的列名称'Discriminator',两个DbContexts

我有一个MVC 5应用程序.我想使用标准的aspnet.identity提供程序来启用用户通过标准\ Account视图登录.但是,我还需要连接到第三方数据库,并且也希望首先使用EF代码.

我从Scott Allen Pluralsight获取的主数据库的上下文.我不知道"ApplicationUser"类为什么或继续从IdentityUser继承,但它在他的视频和我创建的以前的网站中工作.它看起来如下:

namespace ESBAMPortal.DataLayer
{
    // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
    public class ApplicationUser : IdentityUser
    {
    }

    class PortalContext : IdentityDbContext<ApplicationUser>, ESBAMPortal.DataLayer.IPortalContext
    {
        public PortalContext()
            : base("ESBamPortalConString")
        {
            this.Configuration.LazyLoadingEnabled = false;
        }

        public virtual DbSet<DomainClasses.Portal> Portal {get; set;}
    }
}
Run Code Online (Sandbox Code Playgroud)

第三方数据库的上下文如下:

namespace ESBAMPortal.DataLayer
{

    public class ESBContext : DbContext, ESBAMPortal.DataLayer.IESBContext
    {
        public ESBContext()
            : base("ESBExceptionConString")
        {
            this.Configuration.LazyLoadingEnabled = …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first dbcontext asp.net-identity

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

Auto Mapper v4.2.1 - 缺少类型映射配置或不支持的映射

我有一个用VS2015开发的asp.net mvc应用程序.

在Global.asax.cs的Application_Start方法中,调用包含以下内容的方法:

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>());
Mapper.Initialize(cfg => cfg.CreateMap<Models.FaultVmRec, Domain.ESB.Fault>());
Run Code Online (Sandbox Code Playgroud)

我已经检查过这是通过添加断点来执行的.

在我的控制器中,我有以下内容:

faultVmRec = Mapper.Map<Fault, FaultVmRec>(item);
Run Code Online (Sandbox Code Playgroud)

在这一行,我得到了例外:

{"缺少类型映射配置或不支持的映射.\ r \n\r \nMapping类型:\ r \nFault - > FaultVmRec\r \nLGSS.Unit4.BamPortal.Domain.ESB.Fault - > LGSS.Unit4.BamPortal.Website .Models.FaultVmRec\r \n\r \n目标路径:\ r \nFaultVmRec\r \n\r \nSource值:\ r \nSystem.Data.Entity.DynamicProxies.Fault_805BF7128A26886D33A8989DFA212C8E378EDADE588B0922B23ECFE7F697D907"}

但是,如果我粘贴以在执行映射之前显式初始化映射,如下所示:

Mapper.Initialize(cfg => cfg.CreateMap<Domain.ESB.Fault, Models.FaultVmRec>());
faultVmRec = Mapper.Map<Fault, FaultVmRec>(item);
Run Code Online (Sandbox Code Playgroud)

然后它工作正常!

有人知道我哪里出错吗?

c# asp.net-mvc automapper

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

Dotnet 隔离的 Azure Functions - 如何访问 HttpContext

我有一个由 HTTP 调用触发的 dotnet 5 Azure 函数(dotnet-isolated)。

该函数将由不同的 Azure 函数应用程序调用,我想使用 Azure AD 保护目标并使用“客户端凭据”OAuth2 流。

我在以下位置找到了一个适合我的场景的优秀示例:Microsoft GitHub Sample

我的问题是,该示例使用 WebApi 应用程序作为服务。这可以访问 HttpContext 对象,使用 Microsft.Identity.Web 程序集中名为“ValidateAppRole”的扩展方法

我的 Azure 函数确实有一个 HttpRequestData 类型的参数。它有一个包含键值对的 headers 属性。这些密钥之一称为“授权”,其值是 Azure AD 提供的访问令牌。我已通过 jwt.ms 运行此令牌,并可以确认“角色”集合包含我需要验证的自定义角色。所以我知道所需的信息已经存在;我只是不知道如何以编程方式检查它。

由于点网隔离的 Azure 函数似乎无法访问 HttpContext 对象。如何进行与以下内容等效的检查?

HttpContext.ValidateAppRole("CustomRoleName");
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 azure-active-directory azure-functions microsoft-identity-web

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

将列表传递回控制器

我有以下型号:

public List<string> Results { get; set; }
    public List<string> ClubcardNumbers { get; set; }
    public bool FindCards {get; set;}
    public bool FindDuplicates { get; set; }
    public bool AllocatedVouchers { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的控制器中有以下操作:

 public ActionResult ImportExcel()
    {


        if (Request.Files["XlFileUpload"].ContentLength > 0)
        {
            string extension = System.IO.Path.GetExtension(Request.Files["XlFileUpload"].FileName);
            string path1 = string.Format("{0}/{1}", Server.MapPath("~/Content/Upload"), Request.Files["XlFileUpload"].FileName);
            if (System.IO.File.Exists(path1))
                System.IO.File.Delete(path1);

            Request.Files["XlFileUpload"].SaveAs(path1);
            Session.Add("XlFileUpload", path1);

        }

        if (Request.Files["DataFileUpload"].ContentLength > 0)
        {
            string extension = System.IO.Path.GetExtension(Request.Files["DataFileUpload"].FileName);
            string path1 = string.Format("{0}/{1}", Server.MapPath("~/Content/Upload"), Request.Files["DataFileUpload"].FileName);
            if (System.IO.File.Exists(path1))
                System.IO.File.Delete(path1);

            Request.Files["DataFileUpload"].SaveAs(path1); …
Run Code Online (Sandbox Code Playgroud)

model asp.net-mvc-4

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

使用IEnumerable的BeginForm

我有以下观点:

@model IEnumerable<YIS2.Models.Testimonial>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div id="Testimonials">
    <h2>Our Testimonials</h2>
    @foreach (var item in Model)
    {
        <blockquote>
            <p>@item.Content</p>
            <p>@item.AuthorName</p>
        </blockquote>
    }
</div>


<div id="SubmitTestimonial">
<h2>Submit Testimonial</h2>


@using (Html.BeginForm("NewTestimonial", "Testimonial", FormMethod.Post))
{
    @Html.EditorFor(m => Model.AuthorName)
    @Html.EditorFor(m => Model.AuthorEmail)
    @Html.EditorFor(m => Model.Content)
    <input type="submit" id="submitTestimonial" />
}
Run Code Online (Sandbox Code Playgroud)

我需要模型为IEnumerable,因此我可以遍历内容以显示以前保存的推荐.问题是我在语句m => Model.x上出错,因为Model是IEnumerable.

什么是最好的修复方法?

asp.net-mvc razor

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

Azure Agent.Listener - 配置挂起

我有一个 asp.net core 网站,我想使用 devops (VSTS) 管道将其部署到本地 IIS 服务器。

构建管道工作正常,但我在配置发布管道时遇到了问题。

流程如下:

  1. 创建新的发布管道-选择“IIS网站部署”作为模板
  2. 在“部署组作业”边栏选项卡上,有一个下拉菜单,需要选择“部署组”。
  3. 单击此下拉列表右侧的齿轮图标并创建一个名为“Integration-Dev”的新部署组。我的理解是生成的PowerShell脚本必须在部署组内的每个目标服务器上运行?
  4. 创建具有所需部署组访问权限的 PAT 令牌
  5. 登录到我想要将网站发布到的本地 IIS 服务器(新部署组的成员)。
  6. 从管理员提升的 Powershell 会话中的“部署组”devops 页面运行 PowerShell 脚本
  7. 提示输入 PAT 令牌
  8. 挂起很多分钟
  9. 显示以下错误消息:发送请求时发生错误。连接失败。

我能够在浏览器会话中从目标服务器浏览到 devops 站点 ( https://companydomain.visualstudio.com )

我是否正确理解需要在每台目标服务器上安装代理?有什么想法为什么无法连接吗?我猜这是一些公司代理/防火墙问题,但我不知道如何访问任何诊断或日志。我本以为通过 443 访问 .visualstudio.com 就足够了?

azure-devops azure-pipelines-release-pipeline

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