小编Nat*_*ber的帖子

如何卸载Windows服务并删除其文件而不重新启动

我当前的项目涉及部署作为Windows服务运行的升级后的.exe文件.为了用新版本覆盖现有的.exe,我目前需要:

  1. 停止服务
  2. 卸载该服务
  3. 重新启动系统(因此Windows释放它对文件的保留)
  4. 部署新的.exe
  5. 重新安装该服务
  6. 启动升级的服务.

我想避免重启,这样就可以完全编写脚本/自动升级.

有什么办法可以避免重启吗?也许一个命令行工具会迫使Windows放弃它对旧的.exe的死亡控制?

windows filesystems scripting operating-system windows-services

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

Sql Server中的嵌套事务

想象一下以下场景:

我正在使用SQL Server 2005.我有一个事务,在其他SQL语句中调用一个内部也有事务的存储过程.外部事务有时会失败,并在成功调用和提交存储过程后回滚.

我的问题是,存储过程的事务是否也回滚了?

sql-server transactions

32
推荐指数
2
解决办法
4万
查看次数

如何通过LDAP + SSL验证Active Directory信誉?

我正在尝试使用.NET 3.5 System.DirectoryServices.AccountManagement命名空间通过SSL加密的LDAP连接验证针对我们的Active Directory LDAP服务器的用户凭据.这是示例代码:

using (var pc = new PrincipalContext(ContextType.Domain, "sd.example.com:389", "DC=sd,DC=example,DC=com", ContextOptions.Negotiate))
{
    return pc.ValidateCredentials(_username, _password);
}
Run Code Online (Sandbox Code Playgroud)

此代码在不安全的LDAP(端口389)上工作正常,但我宁愿不以明文形式传输用户/传递组合.但是,当我更改为LDAP + SSL(端口636)时,我得到以下异常:

System.DirectoryServices.Protocols.DirectoryOperationException: The server cannot handle directory requests.
  at System.DirectoryServices.Protocols.ErrorChecking.CheckAndSetLdapError(Int32 error)
  at System.DirectoryServices.Protocols.LdapSessionOptions.FastConcurrentBind()
  at System.DirectoryServices.AccountManagement.CredentialValidator.BindLdap(NetworkCredential creds, ContextOptions contextOptions)
  at System.DirectoryServices.AccountManagement.CredentialValidator.Validate(String userName, String password)
  at System.DirectoryServices.AccountManagement.PrincipalContext.ValidateCredentials(String userName, String password)
  at (my code)
Run Code Online (Sandbox Code Playgroud)

端口636适用于其他活动,例如查找该LDAP/AD条目的非密码信息...

UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, _username)
Run Code Online (Sandbox Code Playgroud)

...所以我知道这不是我的LDAP服务器的SSL设置,因为它适用于其他查找的SSL.

有没有人接到ValidateCredentials(...)通过SSL工作的电话?你能解释一下吗?或者是否有另一种/更好的方法可以安全地验证AD/LDAP凭据?

.net c# directoryservices ldap active-directory

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

如何以编程方式检查NServiceBus是否已完成处理所有消息

作为自动启动/停止某些NServiceBus服务的努力的一部分,我想知道服务何时完成处理其输入队列中的所有消息.

问题是,当NServiceBus服务正在运行时,我的C#代码报告的消息少于实际消息.所以当剩下一条消息时,它认为队列是空的.如果服务停止,它将报告"正确"的消息数.这很令人困惑,因为当我使用"计算机管理"应用程序中的"专用队列"视图自行检查队列时,它会显示"正确"的数字.

我正在使用以下C#代码的变体来查找消息计数:

var queue = new MessageQueue(path);
return queue.GetAllMessages().Length;
Run Code Online (Sandbox Code Playgroud)

我知道当有很多消息时,这会表现得非常糟糕.我正在检查的队列一次只能有一些消息.

我查看了 其他 相关 问题,但没有找到我需要的帮助.

任何见解或建议将不胜感激!

更新:我应该提到此服务是在分发服务器后面,在尝试关闭此服务之前,该服务器已关闭.所以我有信心不会将新消息添加到服务的输入队列中.

c# msmq nservicebus

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

MSBuild:为主项目生成XML文档,但不生成依赖项目

我有一个.sln文件,里面有几个项目.为了保持这个简单,我们称之为......

  • 项目A
  • 项目B
  • 项目C

...其中A是引用B和C的主项目.我的目标是更新我的构建脚本,为ProjectA生成XML"Intellisense"文档文件,而不提供有关B和C缺少文档的构建警告.

当前构建脚本

我有一个MSBuild脚本,在构建步骤中包含以下内容:

<PropertyGroup>
    <CustomOutputPath>C:\build\output\</CustomOutputPath>
</PropertyGroup>
<ItemGroup>
    <Projects Include="ProjectA\ProjectA.csproj">
        <Properties>OutputPath=$(CustomOutputPath)</Properties>
    </Projects>
</ItemGroup>
<MSBuild Projects="@(Projects)" />
Run Code Online (Sandbox Code Playgroud)

(ItemGroup中实际列出了多个项目,但同样,让我们​​保持这个简单.)

当我运行构建脚本时,它足够聪明,可以为我编译B,C和A,即使我只指定了A.所有输出都出现在"CustomOutputPath"位置.

我最接近的......

如果我将"DocumentationFile"属性添加到我的项目条目中......

<ItemGroup>
    <Projects Include="ProjectA\ProjectA.csproj">
        <Properties>OutputPath=$(CustomOutputPath);DocumentationFile=ProjectA.xml</Properties>
    </Projects>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

...然后'ProjectA.xml'出现在"CustomOutputPath"中.但是,我还在项目文件夹中为所有三个项目获取名为"ProjectA.xml"的文件:

  • 项目A/ProjectA.xml
  • 项目B/ProjectA.xml
  • 项目C/ProjectA.xml

这些文件包含各自项目的"Intellisense"文档,即使它们都被命名为"ProjectA.xml".

这会在项目文件夹中创建不受欢迎且误导性命名的文件,并且(更重要的是)为B和C中缺少的文档注释生成构建警告.我不想为这些项目添加文档注释,所以我更喜欢找到让MSBuild仅为ProjectA生成文档的方法.

任何人都可以提供任何见解或替代解决方案吗?

msbuild msbuild-task

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

如何在数据库中导致超时异常?

我需要测试一些ASP.NET代码,它们通过调用MS-SQL数据库来处理超时异常.

我能够减少连接上的CommandTimeout参数,但这可能会在到达我的代码之前导致错误.

是否有一种简单的方法可以使数据库在"提示"上超时?

sql timeout

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

如何创建可点击的标签

我想在表单应用程序中创建一个随机可点击标签.我随机生成了一个标签,但我无法点击它.有谁能够帮我?

c# winforms c#-4.0

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