我们的应用程序使用一个组件,该组件在我们的可执行文件的目录中需要一个许可证文件,它恰好是一个.NET WinForms应用程序,尽管我认为这个问题并不重要.当安装在某些XP专业版机器上时(目前为止只有几百个中的三个),该组件会抛出许可证异常.因此,我重新生成了许可证文件并将其发送给组件供应商(EMC Captiva),供应商声称该错误是由于"Users"组对该文件没有读取权限.遇到错误的用户恰好是本地管理员,但除此之外,我仍然对更一般的问题感到好奇.
所以我的问题是,ACL是否存储在一个文件中,以便它们在整个生命周期中都遵循该文件,特别是在我的开发机器(机器1)上生成许可文件,存储在Subversion(机器2)中,从源代码控制中检出由TeamCity(机器3),由InstallShield(机器4)打包到安装程序中,最后部署到客户机器(机器5),由管理员安装它?在我的开发机器(机器1)上生成文件后,通过其支持站点(机器2)将其上载到组件供应商,然后支持人员将其下载到他们的机器上进行检查(机器3)?
我不确定这一点(这就是我在这里问的原因),但我假设每台Windows机器都将ACL存储在NTFS管理的某个中心目录/ list/table中,而不是存储在文件中.当原始文件的ACL从一台机器复制到另一台机器,存储在Subversion中,打包成MSI等时会发生什么?有人能指出一些我可以阅读的好参考资料吗?
该示例标识项目使用该注销:
@if (Request.IsAuthenticated) {
using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" })) {
@Html.AntiForgeryToken()
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("Hello " + User.Identity.GetUserName() + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })</li>
<li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>
}
}
Run Code Online (Sandbox Code Playgroud)
而AccountController.LogOff()动作方法有一个[HttpPost].
我可以想到使用POST而不是GET的唯一原因是[ValidateAntiForgeryToken].我没有看到这个目的,我们所做的就是退出.
当然这有点矫枉过正?为什么不使用常规的GET链接?
我有一个WindowsForms应用程序,似乎泄漏内存,所以我使用Redgate的ANTS内存分析器来查看我怀疑的对象,并发现它们只由已经在Finalizer Queue上的对象持有.很棒,究竟什么是Finalizer Queue?你能指出我最好的定义吗?你能分享任何轶事建议吗?
此外,Finalizer Queue上的所有根GC对象都是名为"caller" 的System.Windows.Forms.Control + ThreadMethodEntry对象的实例.我看到它涉及多线程UI交互,但除此之外我不太了解.原谅我明显的懒惰并承认无知,但这些资源都埋藏在供应商的组件中.我正在和供应商讨论这些问题,但我需要一些指导才能让我加快对话速度.你能指点我最有用的ThreadMethodEntry定义吗?任何轶事建议?
另外,我是否应该关注终结器队列中的这些对象?
更新:这篇红门文章很有帮助.
我在.NET/MSSQL商店工作,这个商店在支持运行Novell的客户方面遇到了麻烦,部分原因是因为我们没有Novell(或其中的钱),部分原因是我们没有Novell经验.这个问题可以很容易地扩展到"当我们没有X技术时,我们如何才能提高对技术X的支持?" 显然,我希望有人说"获取技术或者有经验的人很容易",但请记住,我只是一名开发人员,而不是开发经理或掌管钱包的人.我找了一个Novell服务器虚拟设备(虽然我不确定"Novell服务器"是我应该寻找的)但在VMware的网站上找不到多少.
有没有人知道如何在不使用应用程序配置文件的情况下禁用.NET可执行文件中的authenticode签名验证(以避免启动缓慢)?换句话说,这样做:
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
没有app.config.可能吗?
我知道NTEXT正在消失,这里有更大的最佳实践问题(比如在NTEXT列中存储XML),但我有一个包含XML的表,我需要从中获取属性值.这应该很容易使用sp_xml_preparedocument,但由于你不能声明类型为NTEXT的局部变量而我无法弄清楚如何使用表达式来指定传递给函数的XML文本,因此更加棘手.我可以在SQL 2005中这样做,因为XML或VARCHAR(MAX)数据类型,但我能为SQL 2000做些什么?
DECLARE @XmlHandle int
DECLARE @ProfileXml xml
SELECT @ProfileXml = ProfileXml FROM ImportProfile WHERE ProfileId = 1
EXEC sp_xml_preparedocument @XmlHandle output, @ProfileXml
-- Pluck the Folder TemplateId out of the FldTemplateId XML attribute.
SELECT FolderTemplateId
FROM OPENXML( @XmlHandle, '/ImportProfile', 1)
WITH(
FolderTemplateId int '@FldTemplateId' )
EXEC sp_xml_removedocument @XmlHandle
Run Code Online (Sandbox Code Playgroud)
我能为SQL 2000提出的唯一一件事就是使用varchar(8000).是否真的没有办法使用如下表达式?
EXEC sp_xml_preparedocument @XmlHandle output, (SELECT ProfileXml FROM ImportProfile WHERE ProfileId = 1)
Run Code Online (Sandbox Code Playgroud) 我有一个WinForms应用程序部署到同一办公室的多台机器上.在本周一之前,办公室中的所有用户都没有使用该应用程序,并使用OpenFileDialog选择要导入的文件.一台机器有很多其他应用程序的更新,现在我们的应用程序试图显示OpenFileDialog冻结.它显示OpenFolderDialog很好; 虽然我没有尝试SaveFileDialog.重复一遍,它上周工作,我们的应用程序没有更新,但它本周冻结在一台机器上,而它适用于办公室中的所有其他机器.
有问题的机器安装了另一个.NET应用程序,我验证了OpenFileDialog在其他应用程序中打开没有问题.
有关为什么OpenFileDialog会冻结在一台机器上的任何想法?有想法该怎么解决这个吗?我们可以尝试重新安装而不知道原因,但我认为最好调查为什么要防止它再次发生.
当请求来自 Web 服务器时,我在 IIS 7.5 上运行的 ASP.NET WebForms 应用程序工作正常,但当同一域用户从域中的任何其他计算机请求同一页面时,会引发以下错误:
类型:System.DirectoryServices.AccountManagement.PrincipalOperationException
MSG:发生操作错误。
在 System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit() 在 System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit() 在 System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() 在 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() 在系统.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext上下文,类型principalType,Nullable`1identityType,字符串identityValue,DateTime refDate)在System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext上下文,类型principalType,字符串identityValue)在System.DirectoryServices c:\Users\David\Documents\VsProjects\CeoTrunk\Ceoimage.Basecamp\Basecamp\ 中的 Ceoimage.Basecamp.ActiveDirectory.SidSource._TryGetGroupPrincipal(PrincipalContext context, String groupName) 处的 .AccountManagement.GroupPrincipal.FindByIdentity(PrincipalContext context, String IdentityValue) ActiveDirectory\SidSource.cs:第 115 行
-- 内部异常 --
类型:System.DirectoryServices.DirectoryServicesCOMException
MSG:发生操作错误。
在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) 在 System.DirectoryServices.DirectoryEntry.Bind() 在 System.DirectoryServices.DirectoryEntry.get_SchemaEntry() 在 System.DirectoryServices.AccountManagement.ADStoreCtx.IsContainer(DirectoryEntry de) 在 System.DirectoryServices .AccountManagement.ADStoreCtx..ctor(DirectoryEntry ctxBase、布尔型 ownCtxBase、字符串用户名、字符串密码、ContextOptions 选项)位于 System.DirectoryServices.AccountManagement.PrincipalContext.CreateContextFromDirectoryEntry(DirectoryEntry 条目)位于 System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()
应用程序的 web.config 文件指定<authentication mode="Windows">但<identity impersonate="true" />不使用成员资格提供程序。在 IIS 中,应用程序池作为域用户运行,并且应用程序的身份验证禁用了除 ASP.NET 模拟(设置为经过身份验证的用户)和 Windows 身份验证之外的所有功能。
导致错误的代码只是尝试获取组的 SID 来验证用户是否应该访问应用程序:
public string …Run Code Online (Sandbox Code Playgroud) 即使我的引用Specific Version设置为false,我也会收到程序集绑定错误,因为目标计算机的版本更高.当某些目标计算机可能具有版本1.61.0.0而其他目标计算机具有1.62.0.0或更高版本时,如何指定当前版本或更高版本以避免以下错误?
System.IO.FileLoadException: Could not load file or assembly 'ServerInterface.NET, Version=1.61.0.0, Culture=neutral, PublicKeyToken=151ae431f239ddf0' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'ServerInterface.NET, Version=1.61.0.0, Culture=neutral, PublicKeyToken=151ae431f239ddf0'
Run Code Online (Sandbox Code Playgroud) 在Mandrill的Template API页面上,我插入以下JSON以在单击"Try it"时测试Render方法:
{
"key": "MY VALID KEY",
"template_name": "test1",
"template_content": [
],
"merge_vars": [
{
"name": "invoice_number",
"content": "1001"
}
]
}
Run Code Online (Sandbox Code Playgroud)
测试结果返回我的模板,但merge_var我正在测试的那个尚未合并,即结果仍然包含{{invoice_number}}:
{
"html": "<p style=\"font-family: sans-serif;\">Dear Customer,</p>\r\n\r\n<p style=\"font-family: sans-serif;\">Invoice {{invoice_number}} ...</p>"
}
Run Code Online (Sandbox Code Playgroud)
Mandrill的Render API是否忽略merge_vars了Handlebars变量的映射?
.net ×4
c# ×3
app-config ×2
asp.net ×2
sql-server ×2
winforms ×2
.net-3.5 ×1
acl ×1
asp.net-mvc ×1
authenticode ×1
finalizer ×1
javascript ×1
mandrill ×1
memory-leaks ×1
novell ×1
permissions ×1
redgate ×1
sqlxml ×1
svn ×1
types ×1
vmware ×1
windows ×1
xml ×1