小编Dee*_*101的帖子

C#标准库中的B树类?

C#(.NET或Mono)基类库中的哪个类直接实现B树,或者可以快速重写/继承以实现B树?我看到Hashtable类,但似乎无法找到任何来自Tree家庭的任何类...

必须有一个基本Tree类,可以通过指定树不变条件来重写生成特定的Tree实现(如B-tree或Red-Black或Binary Tree等).让程序员重新发明基本数据结构的轮子是没有意义的(Tree在CompSci中是非常基础的),特别是在面向对象的语言中; 所以我很确定我只是没找对...

编辑:

  1. 我没有使用Hashtable,也不认为它与树有关.我只是用它作为"BCL中另一个数据结构类"的例子.
  2. 对于那些好奇的背景又名用例.它用于O(log(N))搜索内存中的关联集.想象一下为该关联集创建一个索引......

c# tree

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

在Jenkins上以管理员身份运行批处理文件?

我们使用上Win8的64詹金斯建(的MSBuild),包(cspack),运行(csrun)和测试(NUnit的)的Azure云服务项目.Azure云服务模拟器需要以管理员身份运行,我们需要绑定到端口80/443(因此不能使用"精简"模拟器).

我们通过Jenkins运行的简单.bat文件来完成上述操作.通常没有用户登录到计算机,它启动并且Jenkin的服务作为一项服务运行,持续监控我们的GIT仓库和电子邮件失败.管理员手动登录机器进行维护(例如应用补丁或重启机器等)

我们如何配置Jenkins以管理员身份运行该.bat而无需人工干预?

使用桌面UI,我们可以右键单击命令提示符,以管理员身份运行,确认UAC提示,获取提升的权限提示并运行.bat文件.

msbuild administrator batch-file azure jenkins

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

Azure Blob存储或Amazon S3(平面文件存储)的内部替换?

对于与公共互联网断开连接的内部部署安装,Azure Blob存储(和Amazon S3)的合适耐用存储替代品是什么?开发环境是C# - 如果重要的话.

丢失实时地理复制很好(离线地理复制备份工作)但希望保留Azure Blob存储所展示的高可用性功能 - 这意味着如果一个文件服务器出现故障,另一个可以继续服务(或可预测) )位置/ URI直到第一个恢复.

storage amazon-s3 azure durability

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

使用SHA256时,带有InternalsVisibleTo标记的StrongNaming失败

使用时

  1. DLL上的C#Strongnames和
  2. 使用InternalsVisibleTo标签和
  3. 当公钥使用SHA256(或SHA512)时

我们注意到编译过程失败,好像InternalsVisibleTo标签从未被声明过.我们得到的错误是MyInternalClass is inaccessible due to its protection level <snip>

当公钥使用sha1时(在上面的步骤3中),编译过程完美地运行,没有任何问题,并且内部正确地暴露给测试项目.我们创建强名称密钥的方式是

sn -k 4096 SignKey.snk
sn -p SignKey.snk SignKeyPublic.snk sha256
sn -tp SignKeyPublic.snk
Run Code Online (Sandbox Code Playgroud)

我们将项目内部暴露给它的测试项目的方式是:

[assembly: InternalsVisibleTo("MyProjectTest, PublicKey=LongPublicKeyHere")]
Run Code Online (Sandbox Code Playgroud)

我们坚持内Properties\AssemblyInfo.cs的的MyProject项目.

问题:如何在强名称进程中使用SHA256或更好?

编辑:或者这是VS2012工具中的错误吗?

平台,工具:VS2012(更新3),.NET 4.5,Windows 8 x64

c# strongname visual-studio-2012

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

OWIN OAuth 2令牌是如何实际创建的?

我们有OWIN OAuth 2.0工作(感谢这篇精彩的文章),但需要更深入地了解在HTTP响应中转换ClaimsIdentity为实际access_token字符串的实际过程.

我们正在ClaimsIdentityOAuth授权提供商中创建此方法:

public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    // <snip>
    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        // validation, user checking code here

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim("sub", context.UserName));
        identity.AddClaim(new Claim("role", "user")); 
        context.Validated(identity);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我们将HTTP POST请求作为grant_type=password&username=user007&password=jamesbond(放松,密码在这里没问题)时,我们得到了HTTP POST响应主体

{"access_token":"9K8VtOBseU0-XZfdGe2_urn2HESY3jLkpgvowOQFPXsHeWNOrTlTVzfPu35ZEvr4AqSj_b0laesBegtVWuR8R-aItnNXw4vXiuCg0cTNMUKP_yfi89VhD446o2X6ffL8upwZVILpomweSweIVlDmwUDzIwf1ZqubrQ8vuiQDFu-_7vpjPwJ5yVvomQ75agsJWMZk-H_bVWSObds82aM8LCRJwb2bUJchr6_L1GP8xdXqRQz24uDhHvco-XByyMSMzZm-Qo0VVBbocbgP64OJulbihVG_W9e8G69UfbX99pIYiLyE4jixiUtjOKSiMYBISW3_fg","token_type":"bearer","expires_in":1799,"as:client_id":"","userName":"user007",".issued":"Fri, 31 Oct 2014 16:02:05 GMT",".expires":"Fri, 31 Oct 2014 16:32:05 GMT"}

问题:创建实际access_token字符串的逻辑是什么?

问题中的一些具体问题

  1. access_token字符串的内部结构是什么?
  2. 是加密还是签名或两者兼而有之?使用的密钥是什么(假设IIS/Azure云服务)?
  3. 我们如何覆盖生成发出的实际字符串的实现,然后在后续访问中检查相同的标记/字符串?

谢谢

asp.net authentication oauth asp.net-web-api owin

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

基于任务的异步模式的"Hello World"?

由于基于任务的异步模式现在是推荐的路由(根据MSDN @ herehere),我如何将hello world下面的简单代码转换为基于任务的异步模式?

让我们假设我什么都不知道Tasks,我试图向工作人员演示输入和输出,以及从'main'调用.

class Program
{
    static void Main(string[] args)
    {
        Worker wk = new Worker();
        string result = wk.DoWork(1000);
        Console.WriteLine(result);
        Console.WriteLine("Main says, Hello World!");
        Console.ReadLine();
    }

}
class Worker
{
    public string DoWork(int delay)
    {
        Console.WriteLine("Worker says, working ...");
        Thread.Sleep(delay); // represents the 100ms+ workload            
        return "Worker says, I'm done! Hello World!";
    }
}
Run Code Online (Sandbox Code Playgroud)

.net multithreading task-parallel-library

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

向外部DLL添加强名称/签名?

我们正在签署我们的库,但我们的一个外部依赖项本身没有签名,给我们以下错误:

Referenced assembly 'ManyConsole' does not have a strong name

我们ManyConsole通过Nuget 得到了一个包(一个伟大的BTW!),但是我们签了一个非Nuget孤儿.事实上,我们可以使用与我们自己的应用程序相同的密钥对其进行签名,但目前尚不清楚我们如何签署"外部"DLL.

.net c# strongname

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

SOAP 1.2 over SSL + HTTP基本身份验证还是WS-Security?

所以我将是第一个承认我对WS-Security内部知之甚少的人.我有一个SOAP服务工厂,如下所示.将此服务与内部仅测试.NET客户端一起使用时(通过svcutil.exe +自动生成的WSDL使用自动生成的.cs代理类)一切正常.我可以在第5个"实际"(加密)SOAP请求/响应之前看到前4个安全SOAP请求 - 响应握手对.我一般都了解安全性,但希望我知道有关此特定握手的详细信息 - 我猜他们正在进行密钥交换?

无论如何,部分是因为

  1. 我不知道底层的SOAP安全握手(WS-Security)
  2. 我知道HTTPS和HTTP基本身份验证(并且更喜欢SSL传输的速度与每个消息SOAP加密/签名验证操作的速度)
  3. 我想保护SOAP端点通信,同时保留与非.NET客户端的兼容性

我以为我应该通过HTTPS + HTTP基本身份验证进行SOAP交换.所以问题归结为

  1. 是通过HTTPS + HTTP基本身份验证进行SOAP交换吗?或者罕见的(=互操作噩梦!)憎恶?
  2. 上面的跟进:如何将服务工厂配置为推荐设置?毋庸置疑,我希望远离Windows身份验证,这在互联网环境中毫无意义......

    public class SoapServiceHostFactory : ServiceHostFactory
    {
        private Type serviceInterfaceType;
    
        public SoapServiceHostFactory(Type serviceInterfaceType)
        {
            this.serviceInterfaceType = serviceInterfaceType;
        }
    
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses);
            ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
    
            // Enable metadata
            if (smb == null)
            {
                smb = new ServiceMetadataBehavior();
                host.Description.Behaviors.Add(smb);
            }
            smb.HttpGetEnabled = true;
    
            // Enable debugging for service
            ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
            if …
    Run Code Online (Sandbox Code Playgroud)

https ws-security soap

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

Windows Azure无法在具有不同端点数的部署之间执行VIP交换

我正试图通过azure门户网站执行VIP交换,我收到错误:

Windows Azure无法在具有不同端点数的部署之间执行VIP交换.

我看得更近了,我看到了端点数的差异(生产中的2个与分期中的3个).

生产:

Input Endpoints
OUR.API:168.62.21.50:80 
OUR.API:168.62.21.50:3389
Run Code Online (Sandbox Code Playgroud)

分期:

Input Endpoints
OUR.API:168.62.22.55:80 
OUR.API:168.62.22.55:3389 
OUR.API:168.62.22.55:8172
Run Code Online (Sandbox Code Playgroud)

端口80是web,3389是远程桌面.到现在为止还挺好.那个额外的港口8172来自哪里?应用程序中的任何内容都不会侦听端口80以外的任何内容.此外,临时和生产区域中的应用程序几乎完全相同 - 因此它必须是框架.缩小范围的任何步骤?

[编辑]另外,我的角色的ServiceDefinition.csdef只定义了一个端点:

 <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
Run Code Online (Sandbox Code Playgroud)

azure-web-roles

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

为什么ProtoBuf在第一次调用时这么慢,但内部循环非常快?

灵感来自这个问题.我创建了一个小的基准程序来比较ProtoBuf,BinaryFormatter和Json.NET.基准测试本身是一个基于控制台的小型控制台,位于https://github.com/sidshetye/SerializersCompare.可以随意添加/改进,添加新的串行器非常简单.无论如何,我的结果是:

        Binary Formatter         ProtoBuf          Json.NET     ServiceStackJson   ServiceStackJSV
 Loop     Size:512 bytes    Size:99 bytes    Size:205 bytes      Size:205 bytes     Size:181 bytes
    1         16.1242 ms      151.6354 ms       277.2085 ms         129.8321 ms        146.3547 ms
    2          0.0673 ms        0.0349 ms         0.0727 ms           0.0343 ms          0.0370 ms
    4          0.0292 ms        0.0085 ms         0.0303 ms           0.0145 ms          0.0148 ms
    8          0.0255 ms        0.0069 ms         0.0017 ms           0.0216 ms          0.0129 ms
   16          0.0011 ms        0.0064 ms         0.0282 ms           0.0114 ms          0.0120 ms
   32          0.0164 ms …
Run Code Online (Sandbox Code Playgroud)

protocol-buffers protobuf-net

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