小编Ste*_*ter的帖子

自定义DataAnnotation IsValid未调用

背景

大家好,

基本上,我在.NET核类库中编写自定义数据注释,它将验证IEnumerable至少具有一定数量的元素.


问题

出于某种原因,在运行验证时,永远不会调用IsValid.我已经找到了一些关于这个问题的其他SO问题,但它们都有一个与我不同的问题(基本上,它们实际上并没有验证它们的对象).但是,我正在验证我的对象(调用Validator.TryValidateObject(...)),然而,从未调用过IsValid.

如果我使用任何开箱即用的验证属性(例如必需),它将按预期运行.


代码

MinElementsAttribute.cs

public class MinElementsAttribute : ValidationAttribute
{
    readonly int minElements;

    public MinElementsAttribute(int minElements) : base($"Collection must have a size of at least {minElements}")
    {
        this.minElements = minElements;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var list = value as IEnumerable<object>;

        if(list == null || list.Count() < this.minElements)
        {
            return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
        }

        return ValidationResult.Success;
    }
}
Run Code Online (Sandbox Code Playgroud)

MinElementsTests.cs

[Fact]
public void TestValidation()
{
    var validationResults = new List<ValidationResult>();
    var testObject …
Run Code Online (Sandbox Code Playgroud)

c# validation

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

.Net Core 命令行应用程序 | Process.Start() 在某些机器上运行,但不能在其他机器上运行

背景

我正在编写一个 .NET Core 命令行应用程序作为我的构建系统的 CLI。构建系统的这一部分涉及从类库生成 NuGet 包。我正在使用ProcessStartInfo.csProcess.cs调用以nuget.exe发出 pack 命令(nuget.exe位置在系统中PATH)。

  • 注意:我不能使用 dotnet CLI 进行打包,因为类库不是 .NET Core 项目,所以请不要说“为什么不直接使用dotnet pack.

  • C# .NET Core(我的 CLI)
  • C# .NET 4.5(类库)
  • Thoughtworks GoCD(构建服务器)
  • Windows Server 2016(构建服务器操作系统)
  • Windows 10(本地机器操作系统)

问题

我面临的问题是,在我的个人机器上,当我运行构建系统 CLI 时,一切正常;但是,当我的构建服务器运行它时,该进程似乎尝试启动,但随后退出而不抛出异常或返回任何类型的退出代码。两个帐户(我在本地机器上的帐户和运行构建服务器的帐户)都是本地管理员帐户。


代码

Cmd.cs(执行进程)

public static class Cmd
{
    public static int Execute(string filename, string arguments)
    {
        var startInfo = new ProcessStartInfo
        {
            CreateNoWindow = true,
            FileName = filename,
            Arguments = arguments, …
Run Code Online (Sandbox Code Playgroud)

.net c# windows asp.net .net-core

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

Google 数据 API 授权重定向 URI 不匹配

背景

我想在 .NET Core 1.1 中编写一个小型的个人 Web 应用程序来与 YouTube 交互并让我更轻松地做一些事情,我正在关注Google 的 YouTube 文档中的教程/示例。听起来很简单,对吧?;)

使用 Google 的 API 进行身份验证似乎是不可能的!我做了以下工作:

  1. 在 Google Developer Console 中创建了一个帐户
  2. 在 Google Developer Console 中创建了一个新项目
  3. 创建了一个 Web 应用程序 OAuth 客户端 ID,并将我的 Web 应用程序调试 URI 添加到批准的重定向 URI 列表中
  4. 将生成 OAuth 客户端 ID 后提供的 json 文件保存到我的系统
  5. 在我的应用程序中,我的调试服务器 url 已设置(当我的应用程序在调试中启动时,它使用我设置的 url 为http://127.0.0.1:60077)。

但是,当我尝试使用 Google 的 API 进行身份验证时,收到以下错误:

  1. 那是一个错误。

错误:redirect_uri_mismatch

请求中的重定向 URI http://127.0.0.1:63354/authorize/与为 OAuth 客户端授权的不匹配。

问题

所以现在,对于这个问题。在为此寻找解决方案时,我唯一能找到的是人们说

只需将重定向 URI 放在您批准的重定向 URI 中

不幸的是,问题是每次我的代码尝试使用 Google 的 API …

c# google-api youtube-api asp.net-core asp.net-core-1.1

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