小编Chr*_*sen的帖子

如何测试AccessViolationException的处理

我需要编写一个测试来验证我的代码可以处理AccessViolationException(或任何其他WIN32损坏状态异常 - CSE),它通常通过调用第三方库来处理不安全的上下文.这应该都是使用C#on .net 4.0完成的.

我发现了这个相关的问题如何处理AccessViolationException和这篇相关的文章http://dotnetslackers.com/articles/net/All-about-Corrupted-State-Exceptions-in-NET4.aspx,它解释了如何捕获这些CSE和他们的背景.

所以我想在测试中激发一个WIN32 CSE,以确保在我的应用程序中正确处理.就像是:

一些要测试的示例类:

public class MyExceptionHandler
{
    [HandleProcessCorruptedStateExceptions]
    public void HandleCorruptedStateException()
    {
        try
        {
             //Force genuine unsafe AccessViolationException
             //not just a throw new AccessViolationException
        }
        catch(Exception e)
        {
             //Log/cleanup/other
        }
    }

    public void DoesNotHandleCorruptedStateException()
    {
        try
        {
             //Force genuine unsafe AccessViolationException
             //not just a throw new AccessViolationException
        }
        catch (Exception e)
        {
            //Log/cleanup/other
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一个测试:

class MyTest
{
    [Test]
    public void ShouldVerifyThatAnAccessViolationExceptionIsHandledCorrectly()
    {
        var handler = new MyExceptionHandler(); …
Run Code Online (Sandbox Code Playgroud)

.net c# unsafe access-violation c#-4.0

17
推荐指数
1
解决办法
4490
查看次数

DacPac在导出或导入时排除用户和登录

我正在做一些自动化,并在将一些10-15个旧的,古怪的脚本重写为一个单一且简单的单元,它可以:

  1. 在生产环境中从MsSql2012导出数据库方案
  2. 在开发环境中将数据库方案导入MsSql2012

我这样做使用Microsoft.SqlServer.Dac我可以导出/导入dac包.

它工作得很好:),但在完成所有我的TDD和测试之后,现在是真实的时间了,结果我完全错过了我的工作中有2个域.

这意味着当我在开发环境中导入dacpac时出现错误,因为我们的2个域没有完全双向信任,当然数据库也有来自两个域的用户.特别是生产域用户.我可以看到3个可行的解决方案

  1. 在环境之间获得完全信任.但由于我的工作实施了高水平的安全性,因此不会发生这种情况.
  2. 在没有用户的情况下导入dacpac.
  3. 没有用户导出到dacpac.

我已经阅读了文档(当然这是模糊的),试图找到一组可以实现2)或3)的选项.我已经测试了很多组合,但没有一个可以工作.dac pac导入不断尝试创建用户并失败,因为生成用户无法在开发环境中进行验证.

我正在使用Deploy和Extract导出/导入.可以在这里找到不同的选项:

  1. 提取:http://technet.microsoft.com/en-us/library/microsoft.sqlserver.dac.dacextractoptions.aspx
  2. 部署:http://technet.microsoft.com/en-us/library/microsoft.sqlserver.dac.dacdeployoptions.aspx

没有组合我找到了作品,我甚至阅读过帖子,暗示它是DacPac中的一个错误.但我不确定.我现在正在研究的最后一个选项是使用GenerateScript方法,希望能够强制排除用户/登录,但我担心它也无法正常工作.见(http://technet.microsoft.com/en-us/library/hh753526.aspx).

问题: 如何在导出或导入中从我的dacpac中排除用户/登录?

UPDATE

当前提取设置:

IgnoreUserLoginMappings = true,
VerifyExtraction = false,
Run Code Online (Sandbox Code Playgroud)

当前部署设置:

CreateNewDatabase = true,
DeployDatabaseInSingleUserMode = true,
DisableAndReenableDdlTriggers = true,
IgnoreUserSettingsObjects = true,
Run Code Online (Sandbox Code Playgroud)

更新

到目前为止,一切都指向一个丑陋的解决方

I can generate a deploy script using DacServices. 
Then i can parse the script (Remove logins etc).
Then write the result to a file.
And then call SQLCMD in …
Run Code Online (Sandbox Code Playgroud)

c# database sql-server cross-domain dacpac

12
推荐指数
2
解决办法
7154
查看次数

部署PrecompiledApp问题

自动生成的PrecompiledApp.config让我有些头疼.我自动部署旧网站,50%的时间部署我得到这个错误:

System.IO.IOException: The process cannot access the file '\\web.prod.local\c$\Sites\Website\PrecompiledApp.config' because it is being used by another process.
Run Code Online (Sandbox Code Playgroud)

内容:

<precompiledApp version="2" updatable="true"/>
Run Code Online (Sandbox Code Playgroud)

据我所知,网站使用一些卷影复制功能,允许更新网站"运行时",如app.config等.但这1文件似乎是一个例外.

除了在部署时停止网站,有人可以建议一个解决方法吗?

亲切的问候

asp.net pre-compilation web-deployment

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

多个作家,一个读者,哪个集合

我的情况是这样的:

多个线程必须同时写入同一个集合(add和addrange).物品的顺序不是问题.当所有线程都完成(加入)并且我回到我的主线程上时,我需要以foreach样式快速读取所有收集的数据,因为所有线程都完成后不需要实际锁定.

在"过去的日子"中,我可能会在List上使用读写器锁,但是对于新的并发集合,我想知道是否有更好的选择.我只是无法弄清楚哪些并发集合似乎假设读者也在并发线程上.

c# concurrency multithreading

8
推荐指数
2
解决办法
1420
查看次数

JQuery在点击时切换行

我在点击具有特定ID的行时试图隐藏/显示行的子集.

通过大量搜索网络和大量尝试,我得到了下面的代码.

唯一的问题是这个代码由于某种原因只隐藏/显示第一组行.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head>
           <title>Test</title>

           <script src="http://code.jquery.com/jquery-1.5.1.min.js" type="text/javascript"></script>

           <script type="text/javascript">

             $(document).ready(function()
             {
                 $('#rowToClick').click(function ()
                 {
                     $(this).nextAll('tr').each( function()
                     {
                         if ($(this).is('#rowToClick'))
                        {
                           return false;
                        }
                        $(this).toggle();
                     });
                 });
             });
           </script>
         </head>          

<body>
<table>
    <tr id="rowToClick"><td>ClickMe</td></tr>
    <tr id="Tr1"><td>Toggled</td></tr>
    <tr id="Tr2"><td>Toggled</td></tr>
    <tr id="Tr3"><td>Toggled</td></tr>
    <tr id="Tr4"><td>Toggled</td></tr>
    <tr id="Tr5"><td>Toggled</td></tr>
    <tr id="rowToClick"><td>ClickMe</td></tr>
    <tr id="Tr6"><td>Toggled</td></tr>
    <tr id="Tr7"><td>Toggled</td></tr>
    <tr id="Tr8"><td>Toggled</td></tr>
    <tr id="Tr9"><td>Toggled</td></tr>
    <tr id="Tr10"><td>Toggled</td></tr>
</table>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

任何人都有建议和/或可能重写代码?

----------更新 - 最终解决方案-----------

我最终根据Brandon的输入得到了下面的解决方案,因为我想用相同的行为做更多的嵌套,有点像可折叠的树视图.不幸的是,这意味着我必须添加一个额外的属性来跟踪状态,但我现在可以忍受,直到我找到另一种方式(例如检查下一行的可见性).

         $(document).ready(function () {
             toggleRows('.module','.namespace');
             toggleRows('.namespace','.type'); …
Run Code Online (Sandbox Code Playgroud)

jquery expand row html-table

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

TeamCity - SVN和标签

我即将开始使用TC(Great product :)的标签功能,并提出一个问题:

我有1个根VCS: svn:\ someserver\MyRepo

使用标签规则: trunk =>标签

在我的所有项目中,我使用结帐规则来检查所需的项目,如下所示:

Prj1 - Conf1: +:MyPrj1/trunk => /

Prj2 - Conf1: +:MyPrj2/trunk => /

Prj3 - Conf1: +:MyPrjCollection/MySubPrj1/trunk => /

......你得到了照片

如果我在ex上的每个成功构建上设置自动标签,那么会发生什么.Prj1 - Conf1?

A.我的主干是否只是标记为MyPrj1/tags/LabelName,正如我希望的那样?

B.或者是否会标记整个根VCS(MyRepo\tags\Label)或更糟糕的东西?

谁能帮我?:)

亲切的问候加勒特

svn tags label teamcity-5.0

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

带有Hashtable/Dictionary参数的Powershell C#Cmdlet

任何人都可以告诉我如何将参数添加到我的自定义C#cmdlet,这是一个Hashtable/StringDictionary,以便我可以以类似于这样的方式调用我的cmdlet:

 CustomCmdlet -File $someFilePath `
              -StringDictionary/HashtableParameter @{
                            "name1"="value1"
                            "name2"="value2"
                            "name3"="value3"
                            ...
                       }
Run Code Online (Sandbox Code Playgroud)

我根本找不到任何文档/示例,这些文档/示例清楚而简单地解释了如何执行此操作,或者甚至可以用于自定义cmdlet.

我可以使用:

    [Parameter(Mandatory = false, Position = 9)]
    public Dictionary<string,string> FieldValues { get; set; }

    [Parameter(Mandatory = false, Position = 9)]
    public HashTable FieldValues { get; set; }

    ...
Run Code Online (Sandbox Code Playgroud)

或者是其他东西?

亲切的问候

c# parameters powershell hashtable cmdlet

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

WCF与服务总线

我们在工作中处于紧张状态,我需要一些清晰度:

基本上:我们可以使用WCF读取/写入MSMQ并在我们传递的对象上获得类型安全性.

替代方案:我们可以使用像NService Bus这样的东西做同样的事情.

现在,在我的工作中,我们都非常精通WCF,但我们都不熟悉使用服务总线.

因此,有人可以帮助我使用WCF或NService Bus获得一些优点/缺点收益/损失,因为现在我认为使用WCF会更容易(只要我们不需要高级交易等)?

您认为以后从WCF更改为NService Bus有多容易?

亲切的问候

c# wcf nservicebus

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

如何解释使用powershell配置的BindingInformation

我自动部署具有此绑定的旧网站:

net.tcp 808:*
Run Code Online (Sandbox Code Playgroud)

但是,当我使用WebAdministration设置它时:

New-WebBinding -Name "site" -Procotol "net.tcp" -Port 808
Run Code Online (Sandbox Code Playgroud)

我得到这个绑定:

net.tcp *:808:
Run Code Online (Sandbox Code Playgroud)

它们是一样的吗?

iis powershell

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

提交时是否可以更改Git标准消息?

是否可以更改部件:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
Run Code Online (Sandbox Code Playgroud)

说:

# Staged:
Run Code Online (Sandbox Code Playgroud)

git githooks git-commit

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

GitHub帐户重命名

我是GitHub的新人,并且(错误地)在家里和工作中创建了一个帐户,因为我认为在工作中使用我的个人帐户可能存在问题,安全问题或其他问题.原来没有:).

所以我想删除我的家庭帐户(完成)并使用我在工作中创建的帐户,使其成为我的"真实"帐户.

这意味着我想将我的工作帐户重命名为我以前的家庭帐户(已删除)的名称.

  1. 我的工作帐户还没有自己的存储库.
  2. 我的工作让我可以访问他们的项目,就是这样.

所以,如果我重命名我的工作帐户:

  1. 我是否必须对我的本地工作副本(由某个公司帐户拥有)或其他方面做任何事情
  2. 我是否应该继续工作,好像什么都没发生一样?

出于某种原因(可以说明显),在尝试更改帐户名时,GitHub警告中没有提到过scenarie.

account rename github

0
推荐指数
1
解决办法
786
查看次数

Git 日志显示合并分支的父级

我有我的主分支并执行以下操作:

git checkout -b parentBranch
git ...  (do some commits)
git checkout -b childOfParentBranch  (this is while still on branch parentBranch)
git ...  (do some commits)
Run Code Online (Sandbox Code Playgroud)

然后我按照这个确切的顺序合并(重要):

git checkout master
git merge childOfParentBranch --no-ff
Run Code Online (Sandbox Code Playgroud)

现在我如何做一个 git log 来查看两个分支的名称?

沿线的东西:

*
|-Merged parentBranch and childOfParentBranch
Run Code Online (Sandbox Code Playgroud)

或者:

*
|-Merged parentBranch 
|-Merged childOfParentBranch
Run Code Online (Sandbox Code Playgroud)

编辑: 我添加了提交语句,因为缺少它们会导致误解。

我试图使用“git log”来显示所有合并到 master 的分支名称。即使只有 childOfParentBranch 合并到 master 中,也包括 parentBranch 的名称。如果我使用 gitk 进行检查,这些值很清楚,但我需要它们与“git log”一起进行一些自动化。

亲切的问候基督徒

git logging

0
推荐指数
1
解决办法
3263
查看次数