如果sql server的服务器排序规则区分大小写并且数据库不区分大小写,那么查询是否区分大小写?我认为它应该基于数据库而不是服务器整理,但是做了一个似乎不是这样的简短测试.有人知道吗?
使用Outlook发送电子邮件时,您可以选择RTF格式而不是HTML,从而可以将诸如PDF之类的附件内嵌在电子邮件正文中。当您要附加多个文件并希望在正文中引用它们时,这可能非常方便。如果您在Outlook中选择HTML格式,则将不再可能,并且附件图像会显示在电子邮件正文之外(例如“正常”)。
我正在以编程方式发送电子邮件,想知道是否有可能以某种方式将附件内嵌在电子邮件正文中。您可以使用images来实现此目的,可以使用标记,例如<img src="cid:image_id@somethingorother" />引用多部分电子邮件中的嵌入式图像。是否可以使用其他类型的附件执行此操作?
我主要对以下情况感兴趣:我将使用Outlook作为邮件客户端的电子邮件发送给都在同一MS Exchange电子邮件服务器上的收件人。有时他们会使用其他电子邮件客户端,或者通过外部发送,在这种情况下电子邮件降级为“正常”附件也可以。
我可以选择使用RTF / TNEF格式,但是:
我有一个名为azure的存储共享myshare,其结构如下:
/3.3.0.22/ReportTemplates/File1.rdl
/3.3.0.22/ReportTemplates/File2.rdl
/3.3.0.22/ReportTemplates/File3.rdl
/3.3.0.22/ReportTemplates/File4.rdl
Run Code Online (Sandbox Code Playgroud)
当我尝试使用此命令列出文件时
Get-AzureStorageFile -sharename 'myshare' -Path '3.3.0.22/ReportTemplates'
Run Code Online (Sandbox Code Playgroud)
我只得到列出目录本身的结果:
Directory: https://<mystorageaccount>.file.core.windows.net/myshare/3.3.0.22
Type Length Name
---- ------ ----
1 ReportTemplates
Run Code Online (Sandbox Code Playgroud)
添加尾随/无济于事。我确定这是用来列出该路径下的文件的(因为我记录了包括该命令的半自动化步骤),但没有更多。也许这是v1.0中的更改?
Path参数的文档说
指定文件夹的路径。此cmdlet列出此参数指定的文件夹下的文件。
给出的示例表明它应该可以工作。如果我尝试仅获取3.3.0.22目录列表,则同样适用:只是给出3.3.0.22目录列表本身的输出。
我发现是否将输出通过管道传递到Get-AzureStorageFile(即再次使用相同的cmdlet)它可以提供期望的结果。但这似乎错了吗?
get-azurestoragefile -sharename 'myshare' -Path '3.3.0.22/ReportTemplates' | get-azurestoragefile
Directory: https://<mystorageaccount>.file.core.windows.net/myshare/3.3.0.22/ReportTemplates
Type Length Name
---- ------ ----
1 File1.rdl
1 File2.rdl
1 File3.rdl
1 File4.rdl
Run Code Online (Sandbox Code Playgroud)
自从我上次使用这些命令以来,我一直在移动工作站,因此可能有环境因素对此产生了影响……但是我不知道那会是什么。
运行(Get-Module -Name Azure).Version报告版本1.0.2.-1
运行get-azurestoragefile -sharename 'myshare' -Path '3.3.0.22/ReportTemplates' | select-object *给出下面的输出...感觉就像返回了错误的类型:
ServiceClient : Microsoft.WindowsAzure.Storage.File.CloudFileClient …Run Code Online (Sandbox Code Playgroud) 我有一段简单的代码:
public string GenerateRandomString()
{
string randomString = string.Empty;
Random r = new Random();
for (int i = 0; i < length; i++)
randomString += chars[r.Next(chars.Length)];
return randomString;
}
Run Code Online (Sandbox Code Playgroud)
如果我调用此函数生成两个字符串,一个接一个,它们是相同的......但如果我通过生成字符串的两行调试 - 结果是不同的.有谁知道为什么会这样?
在使用时System.Windows.Forms.ShowDialog(IWin32Window),我是否应该能够传递一个IWin32Window代表任何窗口句柄并使其相对于该窗口是模态的?
作为Internet Explorer 7扩展的一部分,我正在尝试打开与Internet Explorer选项卡相关的窗口模式.它不是当前选中的选项卡,但我可以获得选项卡的hwnd.但是,当我将它传递给ShowDialog时,我的表单会显示出来,但它不是关于任何形式的模态:我仍然可以在Internet Explorer中执行操作,包括在应该是所有者的选项卡中.我的表单显示在Internet Explorer窗口上方并且保持在顶部,因此它不像它只是作为普通表单打开,但它不是正确的模态.
使用Spy ++,我可以找到我的表单,并且正确设置了它的所有者句柄.
这是否意味着出了问题,或者我做错了什么?如何正确地模态我的表单?
仅供参考,我正在使用这个包装类来创建IWin32Window一个hwnd(感谢Ryan!):
/// <summary>
/// Wrapper class so that we can return an IWin32Window given a hwnd
/// </summary>
public class WindowWrapper : System.Windows.Forms.IWin32Window
{
public WindowWrapper(IntPtr handle)
{
_hwnd = handle;
}
public IntPtr Handle
{
get { return _hwnd; }
}
private IntPtr _hwnd;
}
Run Code Online (Sandbox Code Playgroud)
更新:使用Internet Explorer 7和.NET 2.0
更新:使用Spy ++和它暴露的句柄玩一些,我发现如果我使用不同的hwnd话,我可以使我的窗口模态到选项卡:
我正在使用IWebBrowser2.HWND dochwnd …
我有一个 .net winforms ListBox,我已经使用 .Add() 向其中添加了项目。我更改了列表中的一个对象,使其 ToString() 方法现在返回不同的值,但该项目的显示值不会更新。我需要调用什么来告诉 ListBox 重新读取 ToString 值?
我想允许一些用户在特定模式中创建表,但不能在其他模式中创建表.我怎样才能做到这一点?
我看到CREATE TABLE帮助说
需要数据库中的CREATE TABLE权限以及要在其中创建表的模式的ALTER权限.
这是否意味着我可以为架构授予ALTER权限并限制所有其他架构的ALTER权限?
我有一些DataTables,我想导出到一个文件,然后看看.我可以使用DataTable.WriteXml()将DataTables的内容输出到XML,但是以表格形式显示这些数据的简单方法是什么?
一种建议的方法是使用XSLT或类似的方法将XML转换为可读的东西.我不知道这是否容易,但如果它易于使用,那将是一个很好的解决方案.
我从WriteXml()获得的单个DataTable的XML示例如下所示.这是一个名为'RecentMatter'的表,包含10列和3行数据.我希望它显示为数据表.我不太关心数据值的格式化,例如将DateTime值转换为更可读的值.生成它时我使用了XmlWriteMode.WriteSchema参数.如果删除它,则删除所有架构信息(在第一个标记之前).
不同的表显然会有不同数量的列,因此任何解决方案都需要处理它,理想情况下无需修改具有不同列的表的解决方案.
<NewDataSet>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="RecentMatter" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="RecentMatter">
<xs:complexType>
<xs:sequence>
<xs:element name="UserLogin">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MatterNumber">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ClientName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MatterName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ClientCode" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OfficeCode" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string"> …Run Code Online (Sandbox Code Playgroud) 我正在使用RadGrid打开列过滤.当我将数据导出到Excel时,我总是在数据的顶部和底部得到一个额外的行,这似乎是因为过滤行.它出现在列标题和数据之间.有什么方法可以隐藏这个吗?
如果我有一个 Kustodatetime并且我想删除时间部分,只在午夜留下一个约会,最好的方法是什么?我可以做这个
todatetime(format_datetime( now(), "yyyy-MM-dd"))
Run Code Online (Sandbox Code Playgroud)
但肯定有更有效的方法吗?
使用 ASP.NET 5,我实现了一个授权策略,我希望将其应用于命名空间中的所有控制器,但不适用于项目中的所有控制器。[Authorize(Policy="MyPolicy")]除了分别向每个控制器添加属性之外,还有其他方法可以做到这一点吗?我想避免另一个开发人员向命名空间添加新控制器但忘记应用策略的风险。
手动执行时看起来像这样:
[ApiController]
[Authorize(Policy="MyPolicy")]
[Route("api/DoStuff")]
public class MyController : ControllerBase
{
[HttpGet("foo")]
public GetFoo()
{
}
}
Run Code Online (Sandbox Code Playgroud) asp.net authorization asp.net-authorization asp.net-core asp.net-core-webapi
在一段时间内检查事件日志中是否记录了事件的最简单方法是什么?
我想执行一系列自动化测试步骤,然后检查是否有任何错误记录到应用程序事件日志中,忽略了一些我不感兴趣的源.我可以使用System.Diagnostics.EventLog然后查看条目集合,但它似乎不适用于这种情况.例如,如果事件日志正在删除旧条目,则Entries.Count会随着时间的推移变小.我更喜欢某种方式来查询日志或监视它在一段时间内的变化.例如
DateTime start = DateTime.Now;
// do some stuff...
foreach(EventLogEntry entry in CleverSolution.EventLogEntriesSince(start, "Application"))
{
// Now I can do stuff with entry, or ignore if its Source is one
// that I don't care about.
// ...
}
Run Code Online (Sandbox Code Playgroud) 我\xe2\x80\x99继承了一个使用Hangfire和sql server作业存储的系统。通常,当计划立即运行作业时,我们会注意到它需要几秒钟的时间才能触发\xe2\x80\x99s。
\n在我的开发环境中运行时查看 SQL Profiler,针对 Hangfire 数据库运行的 SQL 如下所示 -
\nexec sp_executesql N\'delete top (1) JQ\noutput DELETED.Id, DELETED.JobId, DELETED.Queue\nfrom [HangFire].JobQueue JQ with (readpast, updlock, rowlock, forceseek)\nwhere Queue in (@queues1) and (FetchedAt is null or FetchedAt < DATEADD(second, @timeout, GETUTCDATE()))\',N\'@queues1 nvarchar(4000),@timeout float\',@queues1=N\'MYQUEUENAME_master\',@timeout=-1800\n\n-- Exactly the same SQL as above is executed about 6 times/second for about 3-4 seconds,\n-- then nothing for about 2 seconds, then: \n\nexec sp_getapplock @Resource=N\'HangFire:recurring-jobs:lock\',@DbPrincipal=N\'public\',@LockMode=N\'Exclusive\',@LockOwner=N\'Session\',@LockTimeout=5000\nexec sp_getapplock @Resource=N\'HangFire:locks:schedulepoller\',@DbPrincipal=N\'public\',@LockMode=N\'Exclusive\',@LockOwner=N\'Session\',@LockTimeout=5000\nexec sp_executesql N\'select top (@count) Value from [HangFire].[Set] with (readcommittedlock, forceseek) …Run Code Online (Sandbox Code Playgroud) .net ×6
c# ×5
asp.net ×3
sql-server ×2
asp.net-core ×1
azure ×1
bho ×1
collation ×1
create-table ×1
datatable ×1
email ×1
event-log ×1
hangfire ×1
html-email ×1
kql ×1
listbox ×1
modal-dialog ×1
powershell ×1
random ×1
string ×1
telerik ×1
telerik-grid ×1
testing ×1
winforms ×1
xml ×1
xslt ×1