小编Lea*_*ner的帖子

如何知道抛出SqlException的实际问题?

我想以不同的方式处理不同的问题,同时进行数据库操作.

例如,由于数据库凭据错误或由于网络问题,操作可能会失败.或者它可能会失败,因为查询不正确(如果在int类型列中传递字符串值)

在我的C#代码中,我们只有SqlException哪些集合SqlErrors.但是有很多严重程度.

如何轻松识别SqlException的原因?如何确定异常是由于连接问题或身份验证失败或由于查询问题.

我正在使用SQL Server 2005.

c# ado.net sqlexception

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

如何从GAC引用程序集?

我已将强名称程序集安装TestReflection到GAC中(我使用的是.NET 4.0和VS 2010).

不同版本的TestReflectionDLL在.NET 4.0(C:\WINDOWS\Microsoft.NET\assembly\GAC_32\TestReflection\)的GAC中,但是,程序集不会出现在VS 2010的"项目" - >"添加引用"框中.

如何在设计时从另一个项目中引用部署在GAC中的我的程序集?

这个页面说:

您无法添加全局程序集缓存(GAC)中的引用,因为它严格地是运行时环境的一部分.

参考这个声明,我想知道如果需要,如何为其他消费者制作项目的DLL共享程序集?

strongname gac reference .net-4.0 visual-studio-2010

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

ASP.NET Core 3.1 不会在实现 IPostConfigureOptions<T> 的类上调用 PostConfigure

在我的 ASP.NET Core 3.1 应用程序中,我想在最后做一些设置,因为它们依赖于仅在 Startup.cs 中注册的一些其他服务。有人可以帮助我理解为什么我的类实现IPostConfigureOptions<T>.NET Core 永远不会调用吗?

我有一个Options这样的课程:

public class MyTestOptions
{
    public string TestTest { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这在Startup.csConfigureServices方法中像往常一样使用。

services.Configure<MyTestOptions>(o => { o.TestTest = "Test Test Test"; });
Run Code Online (Sandbox Code Playgroud)

我需要“最后”更改一些设置。所以,我实现了IPostConfigureOptions<T>接口。实现类看起来像这样。(以下代码段中未显示 PostConfigure 方法)。

public class MyTestPostConfigure : IPostConfigureOptions<MyTestOptions>
Run Code Online (Sandbox Code Playgroud)

然后将其注册到Startup.csConfigureServices方法中,如下所示。

services.ConfigureOptions<MyTestPostConfigure>();
Run Code Online (Sandbox Code Playgroud)

我也尝试以不同的方式注册 PostConfig 类。

services.AddSingleton<IPostConfigureOptions<MyTestOptions>, MyTestPostConfigure>();
Run Code Online (Sandbox Code Playgroud)

但是,无论如何PostConfigure都不会调用 。我错过了什么吗?**

  1. 为什么 PostConfigure 永远不会执行?
  2. 所有 IPostConfigureOptions 在启动过程中都自动执行是不是真的?或者是否有任何情况下 .NET Core 选择在实际需要之前不运行它?**

c# dependency-injection asp.net-core asp.net-core-3.1

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

如何在NUNit中测试私有变量?

我有一个静态类,它有一个私有变量.

private static Dictionary<strng, string> items = new Dictionary<string, string>();
Run Code Online (Sandbox Code Playgroud)

该类的许多公共方法都访问此字典对象.现在我想编写NUNit测试类(在不同的库中).我该如何测试这个私有变量?

nunit unit-testing

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

变量名不能以'm_'开头:StyleCop规则1308 - 为什么它被认为是坏(或不好/标准)的做法?

我已经开始使用StyleCop,只要有变量声明,它就会发出警告m_VariableName.

警告信息是:Variable names must not start with 'm_'.这是StyleCop规则SA1308.

我可以取消这条规则.但

1)我想知道为什么以"m_"开头声明变量名称是一种不好的做法或被认为是一种不好的做法?

2)下划线字符对Visual Studio重构有特殊意义吗?(我是从一位资深开发者那里听到的.)

.net c# refactoring stylecop naming-conventions

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

从另一个调用一个WCF服务时要考虑的事项

我们正在将一组WSE服务迁移到WCF平台.

通过安全HTTP调用新的WCF服务.(https)

我想从另一个WCF服务调用一个WCF服务的操作合同.这两种服务主要托管在同一个IIS中,但它们可以位于单独的IIS服务器上.

  1. 在这种情况下,我是否需要处理一些事情(目前我显然不知道)?
  2. 在这种情况下是否有任何特殊的呼叫机制?
  3. 当呼叫是同步的还是异步的时,呼叫机制是否会改变?
  4. 你能否提出一些在这种情况下容易获得的绑定?

wcf web-services asmx wcf-binding

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

将变量声明为接口类型是一种好/可接受的做法吗?

使用接口声明变量是一个好习惯吗?在我的公司,我们讨论过它,我反对它.

例如,我想要一个存储字符串键和字符串值对的集合.我也不想允许重复.很明显,我在我的班级中声明了Dictionary变量,该变量将公开(通过属性).

Dictionary<string, string> myDic;
Run Code Online (Sandbox Code Playgroud)

但是,一个团队成员说这不是一个好习惯!他说你用IDictionary声明一个变量,这将允许消费者分配他们想要的任何集合(实现IDictionary).例如Hashtable或Dictionary

IDictionary myDic;
myDic = new Hashtable(); // Consumer's code
Run Code Online (Sandbox Code Playgroud)

要么

mydic = new Dictionary<string, string>(); // Consumer's code -

我现在可以知道,将变量声明为接口类型真的是一个好习惯吗?当我清楚地知道该变量的预期时,那也是如此?

c#

5
推荐指数
2
解决办法
3581
查看次数

X509Certificate2.Verify()方法,验证撤销列表及其性能影响

我想验证X509证书.我想去X509Certificate2.Verify()方法.

但是,文档并没有说明它验证的所有内容.

  1. 请指导我提供一些文档,其中提供了此方法的详细信息.
  2. Verify()方法是否根据撤销列表验证证书?如果是,如果在线列表不可用或网络不可用怎么办?
  3. 根据撤销列表验证证书时是否会影响性能?

.net certificate-revocation x509certificate2 x509certificate

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

X509Certificate2.Verify()方法始终为有效证书返回false

我正在使用智能卡进行身份验证.

SecurityTokenService(身份验证服务)仅托管在我的计算机上.智能卡具有有效证书,其根证书也安装在我的计算机上的本地计算机存储中.

当我使用X509Certificate2.Verify方法验证我的服务中的证书时,它总是返回false.

有人可以帮我理解为什么X509Certificate2.Verify()方法总是返回false吗?

注意:我使用X509Chain并检查了所有标志(X509VerificationFlags.AllFlags).当我建章宁,它会返回trueChainStatus作为RevocationStatusUnknown.


编辑1:

我观察到,如果我在Windows窗体应用程序中编写此代码,该X509Certificate2.Verify() 方法将返回true.它false仅在服务端代码中返回.为什么这样?奇怪但真实!

c# x509certificate2

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

事先不知道派生类型时使用DataContractSerializer反序列化派生类型

在大会A中:

[DataContract]    
        public class Base
        {
            [DataMember]
            public string SomeText { get; set; }
        }
Run Code Online (Sandbox Code Playgroud)

在大会B中:

internal class Helper
        {
           internal static Base Deserialize(string serializedInstanceOfTypeBase)
    {
                   DataContractSerializer serializer = new DataContractSerializer(typeof (Base));
                    XmlReader reader = XmlReader.Create(new StringReader(serializedInstanceOfTypeBase));
                    return (Base)serializer.ReadObject(reader);
    }
    }
Run Code Online (Sandbox Code Playgroud)

在程序集C中:

[DataContract]    
        public class Derived : Base
        {
            [DataMember]
            public string SomeMoreText { get; set; }
        }
Run Code Online (Sandbox Code Playgroud)

如果我序列化一个类型的实例Derived并将其传递给Helper.Deserialize()方法,它将失败SerializationException:

第1行位置错误2.期望命名空间'http://schemas.datacontract.org/2004/07'中的元素'Base'.遇到名为'Derived'的'Element',命名空间'http://schemas.datacontract .ORG/2004/07' .

我该怎样摆脱这个问题?

我知道KnownType属性,但在程序集A和B编码时,我完全不知道它的派生类型.所以我不能使用那个解决方案.

我的产品设计比较复杂,我不能完全在这里发布.Helper.Desrialize()方法只是得到一个string参数.Base即使在运行时,也无法(至少目前)对程序集A或B了解类的派生类型.

程序集B引用程序集A.但A&B不能引用程序集C. …

c# datacontractserializer deserialization

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