小编Shr*_*ike的帖子

如何确定是否将SqlConnection登入System.Transactions的tx?

当我们默认使用来自System.Transactions的转换(为实例创建TransationScope)时,所有Sql-connections(System.Data.SqlClient.SqlConnection)(但对于Oracle.DataAccess.OracleConnection也是如此)都会在打开时登记.这就是所谓的自动入伍.不错的功能.但它可以通过连接字符串的参数(enlist = false)关闭.在这种情况下,打开的连接将不会被列入.但它可以在以后手动登记.所以我的问题是:对于某些给定的SqlConnection实例,我如何确定该连接是否已登记(进入System.Transaction).我可以查看参数的连接字符串.但这不行,因为我说连接可以手动登记.

.net ado.net msdtc transactions .net-2.0

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

如何允许在WebBrowser控件中创建ActiveX

我的.NET程序中有WebBrowser控件。实际上,使用哪个.net包装器(wpf或winforms)都没有关系,因为它们都包装了ActiveX组件“ Microsoft Internet控件”(ieframe.dll)。

因此,我将一些html / js代码加载到WebBrowser中。此代码尝试创建一些ActiveX,但失败。将相同的代码加载到完整的IE中时,可以正常工作。但是在WebBrowser中失败:新的ActiveXObject(“ myprogid”)抛出“自动化服务器无法创建对象”。

WebBrowser控件是否具有允许创建ActiveX的功能?

更新:我添加了“

<!-- saved from url=(0014)about:internet -->
Run Code Online (Sandbox Code Playgroud)

”(位于加载到WebBrowser中的html的顶部)。这没有帮助。

activex webbrowser-control

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

为什么不编译多次使用PreApplicationStartMethodAttribute?

System.Web.PreApplicationStartMethodAttribute定义为:

[AttributeUsage(AttributeTargets.Assembly, AllowMultiple=true)]
public sealed class PreApplicationStartMethodAttribute : Attribute 
{}
Run Code Online (Sandbox Code Playgroud)

即它允许多次使用(AllowMultiple = true).但是如果我尝试将这个属性的几个用法添加到我的程序集中:

[assembly: PreApplicationStartMethod(typeof(MyType1), "Start")]
[assembly: PreApplicationStartMethod(typeof(MyType2), "Start")]
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

错误2重复'PreApplicationStartMethod'属性

为什么是这样?

c# system.web

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

HTTP:我可以信任“内容长度”请求标头值吗

我正在开发文件上传服务。我希望我的用户限制上传文件的总大小,即他们有上传文件的配额。所以我想在用户开始上传新文件时检查可用配额。最简单的方法是获取 POST 请求的“Content-Length”标头值,并根据剩余用户的配额进行检查。但是我很担心我是否可以信任“Content-Length”值。如果坏人在 'Content-Length' 标头中指定一个小值并开始上传一个大文件怎么办。

我应该在从输入流读取(并将文件保存在磁盘上)期间额外检查还是多余的(Web 服务器应该检测到这种情况)?

file-upload http

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

什么是request的模拟.ASP.NET 5中的属性

在WebApi2中,将任意对象放入其中是很常见的HttRequestMessage.Properties.通常它与扩展的方法像做request.SetUserRights()在那里SetUserRights只是将物体放入request.Properties[HttpPropertyKey.UserRights].

现在在ASP.NET 5中没有这样的属性HttpRequest.

什么样的模式应该用于传递任意对象和http请求?

在WebApi中,用于将对象放入request.Properties中,通常使用过滤器.我们仍然在AspNet5中有过滤器,所以问题可以改为:过滤器应该在哪里放置特定于请求的公共数据.此类数据的示例可以是:当前用户的角色,当前用户的语言等.

asp.net-core-mvc asp.net-core

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

如何在VS中调试VSIX扩展,这是其他版本的VS SDK正在使用的版本

我有一个Visual Studio扩展的解决方案.此扩展应该适用于自VS2010以来的任何VS版本.那是因为我使用的是VS 2010 SDK.我做了一些黑客攻击,将我的项目绑定到VS2010 SDK程序集和目标,无需安装SDK即可运行 - 感谢Aaron Marten的详细指南.我可以成功构建我的扩展的vsix并在任何VS中安装它.尼斯.

但我也想用F5调试我的扩展.我希望不是在VS2010中,而是在我的情况下在其他一些VS-VS 2015中.我甚至安装了VS 2015 SDK.但它显然不起作用.作为VS2010 SDK的目标应该部署扩展内置到VS2010实验实例中.

所以问题是:
如果扩展本身使用VS2010 SDK,如何使用F5设置项目来调试VS2015中的vsix扩展

可能我需要使用VS2015 SDK中的一些目标/任务但是哪些以及如何?

vsx visual-studio visual-studio-sdk vsix visual-studio-extensions

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

VSSDK:无法使用包含VSIX项目的混合样式csproj项目构建解决方案

我有一个包含几个针对net461和netcoreapp2.0的项目的解决方案。该解决方案还包含带有DslTools扩展名的VSIX项目。VSIX项目使用旧的csproj格式,而其他项目使用新的csproj格式(SDK)。但是所有项目都将PackageReference格式用于nuget引用。
因此,没有packages.config,也没有project.json。

VSIX项目依赖Microsoft.VSSDK.BuildToolsnuget包和VSExtensibility系列的其他包。

对于DSL工具,我必须将所需的资产从DSL SDK(建模SDK)复制到我的项目中,并明确引用它们。

该解决方案正在VS2017中构建就好了。

当我通过dotnet CLI(dotnet build)构建它时,出现这样的错误:

D:\..\src\packages\microsoft.vssdk.buildtools\15.5.72\tools\VSSDK\Microsoft.VsSDK.targets(82,5): error MSB4062: The "CompareCommonBuildTaskVersion" task could not be loaded from the assembly D:...\src\packages\microsoft.vssdk.buildtools\15.5.72\tools\VSSDL\Microsoft.VisualStudio.Sdk.BuildTasks.dll. Could not load file or assembly 'System.IO.Packaging, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Run Code Online (Sandbox Code Playgroud)

dotnet CLI下的MSBuild可能无法Microsoft.VisualStudio.Sdk.BuildTasks.dll从VSSDK 加载。

因此,无法使用dotnet CLI构建VSIX项目。

然后,我尝试通过msbuild.exe进行构建。它应该可以在VS中正常工作,但不能。

目前,我得到:

"D:..\Src\DslDesigner\Dsl\Dsl.csproj" (default target) (2) ->
(ResolveNuGetPackageAssets target) ->
Z:\Prog\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(184,5): error : Your project.json doesn't have a runtimes section. You should add '"runtimes": { "win": { } }' to your project.json and then re-run NuGet …
Run Code Online (Sandbox Code Playgroud)

.net msbuild vs-extensibility vsix visual-studio-2017

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

可以使用WCF自签名证书吗?

想象一下,我们正在使用WCF(私钥/公钥对)的经典非对称编码.显然,在私钥没有被盗之前它是安全的.我们在密钥之间不需要任何信任链,对吧?客户端只需知道其服务器的公钥,反之亦然.

只有当客户端事先不知道服务器的公钥并在第一次访问时获取它时,才会出现问题.在这里,我们冒着实际服务器是"中间人"而不是真实服务器的风险.我们需要证书.客户端访问服务器,获取其证书(包含公钥)并验证它.

对于验证客户端需要确保为此特定服务器颁发了服务器证书.在这里,我们需要信任链.对?

如果通过WCF使用MessageSecurity.Mode = Certificate访问服务器的客户端事先知道服务器的证书(其公钥),即使证书是自签名的,我们是否可以说通信是安全的?

通常情况下,使用自签名证书并不安全,应始终在生产中避免使用.
但为什么?如果客户端知道预期的公钥然后获得证书,则将其视为可信(通过将其公钥与预期的公钥匹配),然后它不会取消服务器必须使用其私钥加密有效负载的事实.当且仅当私钥和公钥一起创建时,才能使用pulbic密钥成功解密密码.

你能看出我推理中的任何缺陷吗?

如果它是正确的,那么我可以确定使用自定义X509CertifacateValidator并将客户端代理的ClientCredentials.ServiceCertificate.DefaultCertificate设置为某些固定的(在客户端上)X509Certificate安全吗?

自定义X509CertifacateValidator是这样的:

public class CustomCertificateValidator : X509CertificateValidator
{
    private readonly X509Certificate2 m_expectedCertificate;

    public CustomCertificateValidatorBase(X509Certificate2 expectedCertificate)
    {
        m_expectedCertificate = expectedCertificate;
    }

    public override void Validate(X509Certificate2 certificate)
    {
        ArgumentValidator.EnsureArgumentNotNull(certificate, "certificate");

        if (certificate.Thumbprint != m_expectedCertificate.Thumbprint)
            throw new SecurityTokenValidationException("Certificated was not issued by trusted issuer");
    }
}
Run Code Online (Sandbox Code Playgroud)

security wcf certificate wcf-security x509certificate

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

ASP.NET vNext - 本地化(.resx)

如何使用ASP.NET vNext(云优化模式)使用resx文件进行本地化,如何为当前线程设置文化?

System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentUICulture
Run Code Online (Sandbox Code Playgroud)

CurrentCultureCurrentUICulture属性缺失.我有VS 2015 CTP3.

帕维尔

visual-studio-2015 asp.net-core

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

如果类别不存在,PerformanceCounterCategory.Exists非常慢

我有一种库,它使用一堆自己的perf计数器.但我希望我的库工作正常,即使没有安装perf计数器.

所以我已经在PerformanceCounter上创建了包装器,并在第一次使用时检查PerfCounter是否存在.如果它们存在,那么我使用本机PerformanceCounter而不是我使用的包装器什么都不做.

因此,为了检查perf计数器的存在,我使用了PerformanceCounterCategory.Exists

问题是,如果没有这样的类别,那么PerformanceCounterCategory.Exists调用(在我的机器上)大约需要10秒!不用说它太慢了.

我能做什么?

代码自己尝试:使用System; 使用System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        var ts = Stopwatch.StartNew();
        var res = PerformanceCounterCategory.Exists("XYZ");
        Console.WriteLine(ts.ElapsedMilliseconds);
        Console.WriteLine("result:" + res);
}
}
Run Code Online (Sandbox Code Playgroud)

.net system.diagnostics

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