小编Mar*_*ood的帖子

如何确定事件是否已订阅

在我的.NET应用程序中,我订阅了来自另一个类的事件.订阅是有条件的.我在控件可见时订阅事件,在它变得不可见时取消订阅.但是,在某些情况下,我不想取消订阅事件,即使控件不可见,因为我想要在后台线程上发生的操作的结果.

有没有办法确定一个类是否已经订阅了该事件?

我知道我们可以在类中通过检查事件来引发该事件null,但是我如何在订阅该事件的类中执行它?

.net c#

52
推荐指数
3
解决办法
6万
查看次数

MSTEST PrincipalPermission

如何对使用PrincipalPermission属性修饰的代码进行单元测试?

例如,这有效:

class Program
{
    static void Main(string[] args)
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        var c = new MyClass();
    }
}

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Users")]
class MyClass
{
    public MyClass()
    {
        Console.WriteLine("This works.");
    }
}
Run Code Online (Sandbox Code Playgroud)

这会抛出SecurityException:

[TestClass]
public class UnitTest1
{
    [TestInitialize]
    public void TestInitialize()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
    }

    [TestMethod]
    public void TestMethod1() 
    { 
        var c = new MyClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

.net c# security unit-testing mstest

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

使用AngularJS和Highlight.js进行动态语法突出显示

我正在构建一个站点,说明常见的应用程序漏洞,如SQL注入.我正在使用AngularJShighlight.js来创建交互式示例.

如何让AngularJS和highlight.js更新我的代码片段?

此Fiddle演示了' OR 1=1 --如果未验证或清理用户的输入,如何在"电子邮件"字段中输入可能会更改查询的预期行为.

SELECT * FROM dbo.Users WHERE Email='{{email}}' AND Password='{{password}}'  
Run Code Online (Sandbox Code Playgroud)

当用户输入电子邮件地址和密码时,Angular会更新查询.但是,语法突出显示不会更新.

SELECT * FROM dbo.Users WHERE Email='user@domain.com' AND Password=''
Run Code Online (Sandbox Code Playgroud)

我尝试重新初始化hljs,但是当我做角度停止更新查询时.

hljs.initHighlighting.called = false;
hljs.initHighlighting();
Run Code Online (Sandbox Code Playgroud)

应用

<script>
    var app = angular.module("app", ['hljs']);
    app.controller("controller", function($scope) {
        $scope.email = "user@domain.com";
        $scope.password = "";
    })
</script>
<div ng-app="app" ng-controller="controller">
    <div>
        <div class="row">
            <div class="col-sm-4">Email
                <input type="text" class="form-control" ng-model="email">
            </div>
            <div class="col-sm-4">Password
                <input type="text" class="form-control" ng-model="password">
            </div>
        </div>
        <br>
        <div hljs include="'compile-me'" compile="true" …
Run Code Online (Sandbox Code Playgroud)

javascript syntax-highlighting angularjs

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

截止日期24:00(午夜)

我有一个客户希望看到午夜表示为前一天的结束.

var date = DateTime.Parse("1/27/2010 0:00");
Console.WriteLine(date.ToString(<some format>));
Run Code Online (Sandbox Code Playgroud)

显示:

1/26/2010 24:00
Run Code Online (Sandbox Code Playgroud)

我相信这在ISO 8601标准中是有效的.(见这个)

有没有办法在.net中支持这个(没有丑陋的字符串操作黑客)?

.net c# datetime

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

带有CheckBoxes的C#ListView,多选行时检查自动复选框

我正在使用带有multirow和fullrow select的ListView控件.当我一次选择多行时,我的一些行会神奇地被检查.拖动鼠标时也会选择一个鼠标,然后单击另一个鼠标,就会发生这种情况.

请参阅此处描述问题的图片 替代文字

葡萄柚到底发生了什么?任何人?

c# checkbox listview multi-select winforms

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

如何:更新SQL Azure DB,代码优先迁移,TFS部署

从Team Foundation Service(云中的TFS)部署网站时,有没有办法使用Code First Migrations更新SQL Azure数据库?

我能够使用代码和以下命令在本地添加新表:

PM>添加迁移...

PM>更新数据库

当我签入我的代码并且TFS将网站部署到Azure时,我没有看到任何执行这些命令的方法.

成员资格提供表越来越创建的,但不是我的新表"ExternalUserInformation".

azure-web-sites azure-sql-database azure-devops

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

ASP.NET_SessionId 的两个 Set-Cookie 标头

我有一个 ASP.NET 应用程序,它为 ASP.NET_SessionId 返回两个 Set-Cookie 标头。以下出现两次:

Set-Cookie: ASP.NET_SessionId=2alwzlvkg2ckvi43s3y0t3lm; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)

这发生在本地以及我们的开发和 QA 服务器上。

值集是相同的,因此它似乎不会导致任何问题,但是我很想知道为什么要向客户端返回两个 Set-Cookie 标头。

我搜索了应用程序的代码,浏览了 web.config 并在谷歌上搜索了解释,但我无法查明重复标题的原因。有任何想法吗?

asp.net session-cookies

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

WCF:Svcutil生成无效的客户端代理,Apache AXIS Web服务,重载操作

我正在使用用Java编写并使用Apache Axis 1.3的第三方Web服务。该服务有许多重载操作。当WCF Svcutil生成代理时,它通过在操作名称后面附加一个数字来重命名重载的操作。例如:

getDataResponse getData(getDataRequest request);

getDataResponse1 getData1(getDataRequest1 request);
Run Code Online (Sandbox Code Playgroud)

这本身不是问题,但是当Svcutil生成请求/响应消息时,它忽略了更改MessageContracts的WrapperName属性。

    [MessageContractAttribute(
        WrapperName = "getData", 
        WrapperNamespace = "http://namespace.com", 
        IsWrapped = true)]
    public partial class getDataRequest1 {  ..  }
Run Code Online (Sandbox Code Playgroud)

当客户端应用程序尝试打开代理时,将引发以下异常:

InvalidOperationException:操作getData1中的RPC消息getDataRequest1具有无效的主体名称getData。它必须是getData1

如果我更改WrapperName =“ getData1”,则代理将打开,但是...

  1. 我无法调用该操作,因为该服务无法识别“ getData1”
  2. 该服务有近1100次操作,其中近一半是超载

有什么方法可以生成和/或修改代理,以便所有操作都可以与WCF一起使用?

标记

wcf wsdl svcutil.exe

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