我正在寻找一种将对象树转换为XML的方法.写作会很有趣,但我相信有人已经写过了.这是我的愿望清单:
我不需要重建对象模型,因此只写解决方案很好(可能是预期的).
我认为折扣:
我正在构建一个用于分发由不同组织创建的包(.zip档案)的系统.我想要一种方法来验证包的发布者确实是他们声称的那个,并且该文件没有被篡改.
要验证发布者,需要一个类似于Web浏览器使用的系统 - 例如,我的应用程序联系验证身份的根证书颁发机构.换句话说,'绿色酒吧':)
我猜测包的创建会像这样工作:
打开包的方式如下:
这样,我已经验证了身份,并且还验证了内容(内容本身不需要加密 - 目标是验证,而不是隐私).
所以我的问题是:
最后,如果组织没有付费证书而是决定使用自行颁发的证书,我认为我仍然可以验证哈希值(为了数据完整性),而无需在计算机的证书库中安装内容或任何类似的魔法(在这些情况下,我只是显示:"由XYZ公司出版(未经证实)".这是正确的吗?
我已经找到了很多关于如何使用X509和RSACryptoServiceProvider的链接,所以我可能想出代码,我想我对这个过程更感兴趣并且知道我正在使用正确的技术.
在发布它!迈克尔·尼加德(Michael Nygard)认为,许多灾难性的系统故障往往是由一连串的事情造成的.例如,两个线程死锁.现在线程池中的线程少了两个,因此其他线程上的负载增加会增加其死锁的可能性.突然,服务器根本没有响应,因为线程池耗尽,导致负载均衡器将流量转移到其他服务器(所有服务器都运行相同的代码),这增加了死锁的可能性.突然整个农场都处于脱机状态.
大多数RDBMS服务器检测到死锁并决定"失败者"(一个事务中止,另一个事务可以继续).相反,在C#中,lock语句将无限期地等待获取锁.
但是,您可以调用Monitor.TryEnter(lockObject,TimeSpan)来请求锁定或超时.如果超时到期并且无法获取锁定,则返回false.有些人在使用语句中将其包装起来以保持良好的语法.
所以我的问题是,你是否总是使用超时获取锁定?除了死锁情况外,超时会产生哪些问题?
在我的配置文件中,我有一个应用程序的遗留部分使用的连接字符串(使用数据集)和实体框架的另一个字符串:
<connectionStrings>
<add name="Database" connectionString="Server=..." />
<add name="Entities" connectionString="metadata=.....connection string='Server=..." />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
这意味着服务器名称,数据库名称等被指定两次.我想告诉EF连接字符串重用第一个字符串 - 这可能吗?
我正在寻找一个托管/非托管API,它将允许我找到哪些对象引用另一个对象,并可能防止它被垃圾收集.
这样的API可能如下所示:
var foo = new Foo();
var bar = new Bar();
bar.Foo = foo;
var references = GC.GetReferencesTo(foo);
// references is an array that contains bar
Run Code Online (Sandbox Code Playgroud)
我知道可以使用分析器,但我想将它作为单元测试的一部分.我可以使用托管或非托管API吗?
假设我有两个顶级任务:
task :publicBuild => [:zipSourceCode, :copyPrivateKey]
task :internalBuild => [:copyPrivateKey]
Run Code Online (Sandbox Code Playgroud)
对于internalBuild任务,我不想压缩源代码 - 我只想要私钥.但对于a publicBuild,我想做两件事.但我需要保证publicBuild,在zipSourceCode任务之前执行copyPrivateKey任务(我不希望源代码ZIP包含公钥).
一个依赖,如copyPrivateKey => zipSourceCode不会起作用,因为它意味着internalBuild,它会调用zipSourceCode,我不想要.
我想告诉rake的是"如果要执行这两个任务,你应该首先执行此操作,但它们都是可选的".这可能吗?
鉴于此类:
class Foo
{
readonly ILog log;
public Foo(ILog log)
{
this.log = log;
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想配置Unity注入ILog.这很简单:
container.RegisterInstance<ILog>(LogManager.GetLogger(typeof(XYZ)));
Run Code Online (Sandbox Code Playgroud)
但是我想LogManager.GetLogger用正在解析的父类型的类型进行Unity调用.
这很接近:
container.RegisterType<ILog>(new InjectionFactory((c, t, s) => LogManager.GetLogger(t)));
Run Code Online (Sandbox Code Playgroud)
但t在这种情况下,类型是resolve(ILog),而不是为(Foo)解析对象的类型.
我知道我可以这样做:
container.RegisterType<Foo>(new InjectionFactory(c => new Foo(LogManager.GetLogger(typeof(Foo)));
Run Code Online (Sandbox Code Playgroud)
但是我不希望每次注册对象时都要添加那个疯狂的声明.
我知道这可以在Autofac中完成,我知道真正的答案不是首先使用Unity,但这可以做到吗?:)
假设我正在关注TDD并使用VS/ReSharper.我开始写这样的测试:
[TestFixture]
class FooFixture
{
[Test]
public void ShouldDoSomething()
{
var foo = new Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
此时,Foo不存在.ReSharper建议创建类的选项,但它将它放在我的测试项目的测试类旁边,而不是在我的实际项目中.所以我让它创建类,然后将其移动到一个新文件,然后将文件移动到正确的位置,最后修复命名空间.这似乎很多工作.
有没有更快捷的方法来快速创建Foo课程并将其放在正确的位置?似乎可以从我的测试项目的命名空间中猜出"正确的位置".
我安装了Team Foundation Server,并在一年前从VSS迁移了我的代码.这是一个很大的错误.在工作区,只读标志,解决方案绑定和错误的合并工具之间,我想我应该坚持使用VSS.
那么,我如何从TFS迁移回VSS?
这是一个测试:
var decoded = Convert.FromBase64String(certificateBase64Encoded);
var certificate = new X509Certificate2(decoded, (string)null, X509KeyStorageFlags.Exportable);
var x = Convert.ToBase64String(certificate.Export(X509ContentType.Pkcs12));
var y = Convert.ToBase64String(certificate.Export(X509ContentType.Pkcs12));
Console.WriteLine(x == y);
Run Code Online (Sandbox Code Playgroud)
使用时X509ContentType.Cert,值始终相同,因此控制台打印"True".但是当使用Pkcs12选项时,值总是完全不同.为什么会这样,有没有办法使它们一样?
security cryptography certificate x509certificate2 x509certificate
我正在使用MbUnit进行一些集成测试.在TestFixtureSetUp中,我创建了一个新的数据库实例(使用GUID作为数据库名称).在拆除中,我删除它.
但是,如果测试失败,我想保持数据库存活(所以我可以调查).有没有办法告诉我的TestFixtureTearDown测试是通过还是失败?
在代码中它看起来像:
[TestFixtureTearDown]
public void Stop()
{
if (/* All tests passed */)
{
Database.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个现有的ASP.NET MVC网站,其行为如下:
public ActionResult Show(int id)
{
var customer = GetCustomer(id);
return View(new ShowCustomerModel(customer));
}
Run Code Online (Sandbox Code Playgroud)
我现在需要能够将这些操作作为API的一部分执行,该API将从第三方应用程序调用.理想情况下,操作看起来像:
public ActionResult Get(int id)
{
var customer = GetCustomer(id);
return Json(new CustomerResource(customer));
}
Run Code Online (Sandbox Code Playgroud)
问题是,存在哪些ASP.NET MVC工具或模式允许我将它们组合在一起 - 例如,Rails允许我指定多种返回格式:
def index
@customer = get_customer(...)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @customer}
format.json { render :json => @customer}
end
end
Run Code Online (Sandbox Code Playgroud)
这甚至是一个很好的模式吗?我应该只是:
public Customer Get(int id)
{
return GetCustomer(id);
}
Run Code Online (Sandbox Code Playgroud)
并使用动作过滤器有选择地呈现为JSON或视图?
.net ×4
c# ×2
ado.net ×1
api ×1
asp.net ×1
asp.net-mvc ×1
certificate ×1
cryptography ×1
log4net ×1
mbunit ×1
rake ×1
refactoring ×1
resharper ×1
rest ×1
ruby ×1
scalability ×1
security ×1
tdd ×1
tfs ×1
xml ×1