简单的问题,但我还是无法解决它...
我有一个带有DATETIME字段的表TEST,如下所示:
ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000
Run Code Online (Sandbox Code Playgroud)
我需要的是下面的查询返回此行和每行的日期= 03/19/2014,无论什么时候是:
select * from test where date = '03/19/2014';
Run Code Online (Sandbox Code Playgroud)
但它不返回任何行.唯一的工作方式是指定时间:
select * from test where date = '03/19/2014 20:03:02.000';
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
为什么不能将匿名方法作为参数传递给BeginInvoke
方法?我有以下代码:
private delegate void CfgMnMnuDlg(DIServer svr);
private void ConfigureMainMenu(DIServer server,)
{
MenuStrip mnMnu = PresenterView.MainMenu;
if (mnMnu.InvokeRequired)
{
mnMnu.BeginInvoke((CfgMnMnuDlg)ConfigureMainMenu,
new object[] { server});
}
else
{
// Do actual work here
}
}
Run Code Online (Sandbox Code Playgroud)
我试图避免宣布代表.为什么我不能写下面的东西呢?或者我可以,我只是无法弄清楚正确的语法?以下目前生成:
参数类型'System.Delegate'不能赋予参数类型'匿名方法'
好吧,这当然是正确的,但我是否可以使用其他语法来做到这一点(避免为了使用而必须声明一个单独的委托BeginInvoke()
?
(能够做到这一点将完全符合使用anon方法/ lamdas代替显式委托的概念,这些委托在其他地方干净利落地工作.)
private void ConfigureMainMenu(DIServer server,)
{
MenuStrip mnMnu = PresenterView.MainMenu;
if (mnMnu.InvokeRequired)
{
mnMnu.BeginInvoke( // pass anonymous method instead ?
delegate(DIServer svr) { ConfigureMainMenu(server);},
new object[] { server});
}
else
{
// Do actual work here
}
}
Run Code Online (Sandbox Code Playgroud) 如果使用以下代码来模仿其他用户,
[DllImport("advapi32.dll", SetLastError = true)]
private static extern bool
LogonUser(string lpszUsername, string lpszDomain,
string lpszPassword, int dwLogonType,
int dwLogonProvider, ref IntPtr phToken);
var handle = IntPtr.Zero;
const int LOGON32_LOGON_NETWORK = 3;
const int LOGON32_PROVIDER_DEFAULT = 0;
const int SecurityImpersonation = 2;
LogonUser(username, domain,
password, LOGON32_LOGON_NETWORK,
LOGON32_PROVIDER_DEFAULT, ref handle))
Run Code Online (Sandbox Code Playgroud)
在两个不同的并发线程上,它们会相互干扰吗?即,当前登录的用户是与线程关联还是与主机进程关联?
我使用登录句柄创建一个WindowsImpersonationContext对象,作为名为"Impersonator"的类型的实例中的私有状态字段(下面的代码).因此,由于此WindowsImpersonationContext对象是此类型实例中的本地专用字段,并且每次我想模拟某些凭据集时都会创建此类型的新实例,我可以假设此WindowsImpersonationContext正在用于在块内执行代码期间执行所有ACL验证,例如
using (Impersonator.Impersonate(userId, domain, password))
{
// Code I want to execute using supplied credentials
}
Run Code Online (Sandbox Code Playgroud)
我关心的是MSDN页面上的声明WindowsImpersonationContext说:
此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的.任何实例成员都不保证是线程安全的.
Impersonator
类:
public class Impersonator: IDisposable
{
#region Declarations
private …
Run Code Online (Sandbox Code Playgroud) 我有一个由Windows服务托管的WCF服务.如果我使用与运行服务相同的凭据登录到客户端计算机,则客户端应用程序会成功,但如果我使用任何其他有效域帐户登录,则会失败并出现异常.
我有两个我正在测试的帐户,一个是普通用户帐户,另一个帐户是管理员帐户.我已经尝试了下面列出的所有四种组合:
Server account
CLient RegUser AdminAcct
RegUser Succeeds Fails
AdminAcct Fails Succeeds
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,当客户端和服务器都在非管理员帐户下运行时,系统可以正常工作,因此不会出现管理问题.在它失败的两种情况下,我在客户端上得到相同的异常,并没有指示服务器日志中发生的任何事情:
"对SSPI的调用失败了.看内部异常"
内部异常是"目标原则名称不正确".
我已将帐户注册为SPN.
问题只发生在我的客户端应用程序中,但不是在我使用WCVFTestClient.exe
Visual Studio附带的时候.
WCF跟踪日志中的例外是
"System.ServiceModel.Security.SecurityNegotiationException,System.ServiceModel,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"
有消息:
"远程端的身份验证失败(流可能仍可用于其他身份验证尝试)."
堆栈跟踪位于底部:出了什么问题?
堆栈跟踪
System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeAcceptor.OnAcceptUpgrade(流流,SecurityMessageProperty&remoteSecurity)System.ServiceModel.Channels.StreamSecurityUpgradeAcceptorBase.AcceptUpgrade(流流)System.ServiceModel.Channels.InitialServerConnectionReader.UpgradeConnection(IConnection连接,StreamUpgradeAcceptor upgradeAcceptor,IDefaultCommunicationTimeouts defaultTimeouts) System.ServiceModel.Channels.ServerSessionPreambleConnectionReader.ServerFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)System.ServiceModel.Dispatcher.ChannelHandler.OpenAndEnsurePump()System.Runtime.ActionItem.DefaultActionItem.TraceAndInvoke() System.Runtime.ActionItem.CallbackHelper.InvokeWithoutContext(Object state)System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode,UInt32 numBytes,NativeOverlapped*nativeOverlapped)System.Run time.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32错误,UInt32 bytesRead,NativeOverlapped*nativeOverlapped)System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode,UInt32 numBytes,NativeOverlapped*pOVERLAP)
当SQL Server Books联机表示" 读取操作完成后,资源上的共享(S)锁定被释放" ,除非将事务隔离级别设置为可重复读取或更高,或者使用锁定提示来保留共享( S)在交易期间锁定."
假设我们在默认隔离级别(Read Committed)上讨论的是没有显式事务的行级锁,那么" 读操作 "指的是什么?
注意:我需要知道的原因是我们有一个由数据层Web服务生成的第二个只读select语句,它创建页级共享读锁,由于与行级独占更新锁冲突而生成死锁来自使服务器保持更新的复制程序.select语句相当大,有许多子选择,一个DBA建议我们重写它以将其分解为多个较小的语句(较短的运行部分),"减少锁定持有的时间".因为这假设共享读锁被保持直到完成select语句完成,如果这是错误的(如果在行或页面被读取时释放锁)那么该方法将不会产生任何影响....
我们知道,除了元素实例化的线程之外的任何线程都不可能执行操作任何UI元素属性的代码...我的问题是:为什么?
我记得当我们使用COM用户界面元素时(在COM/Visual Basic 6.0天内),所有UI元素都是使用COM类和共同类创建的,这些类使用称为Thread-Local-Storage的内存模型来存储其资源(TLS),但我记得,这是必需的,因为与构建COM组件的方式有关,并且不应与.NET UI元素相关.这种限制仍然存在的根本原因是什么?
是因为底层操作系统仍然为所有UI元素使用基于COM的Win32 API类,甚至是在托管.NET应用程序中操作的那些元素?
我试图从MySQL表中获取行数,其中数据按WEEK分组.
到目前为止,我的查询是:
"SELECT count(*) as tweets, twitTimeExtracted as date
FROM scene.twitData
group by week(twitTimeExtracted)"
Run Code Online (Sandbox Code Playgroud)
此查询返回以下数据:
正如你所看到的那样,周数不正确,我期待每周的数据从1月7日(7,14,21,28,4,11等等)开始,一直持续到本周.
我还尝试了orignal查询的修改版本:
SELECT count(*) as tweets, twitTimeExtracted as date
FROM scene.twitData
WHERE date(twitTimeExtracted)
BETWEEN '2013-01-07' and '2013-03-11'
group by week(twitTimeExtracted)
Run Code Online (Sandbox Code Playgroud)
这将返回与第一个查询类似的结果.
也许与DATETIME中存储的一些数据存在不一致:twitTimeExtracted列在几行数据上?我真的不知道我对MySQL不是很有经验.
真的很感激任何帮助.
谢谢
如果使用自定义XML Serialization(IXmlSerialiable
),在包含不使用自定义IXmlSerializable
接口的组成复杂对象的属性的复杂对象上,如何在IXmlSerializable.ReadXml(XmlReader reader)
方法中指定希望反序列化器对这些子属性使用普通反序列化?
注意:类似于这个问题
我一直在创建一个MySQL查询.贝娄是我的数据库结构.
作者(author_id和author_name)
书籍(book_id和book_title)
books_authors是链接表(book_id和author_id)
所有书籍和作者的结果 - http://i.stack.imgur.com/VLzXn.png
我需要为某位作者获取所有书籍,但如果一本书有2位作者,则必须同时显示第二本书.例如,book_id = 2的书"Good Omens"有两位作者.当我运行查询时,我得到了author_id = 1的书籍,但我不能在结果中包含第二作者 - "Neil Gaiman".查询是:
SELECT * FROM books
LEFT JOIN books_authors
ON books.book_id=books_authors.book_id
LEFT JOIN authors
ON books_authors.author_id=authors.author_id
WHERE books_authors.author_id=1
Run Code Online (Sandbox Code Playgroud)
以下是结果:
http://i.stack.imgur.com/PypqZ.png
我希望你能理解我,任何帮助将不胜感激.
使用Microsoft ClosedXml
和 DocumentFormat.OpenXml
NuGet实用程序包时出现错误。更新了这些NuGet程序包(从2.7.2版到2.8.1版)后,现在出现以下异常:
异常System.IO.FileLoadException:无法加载文件或程序集'DocumentFormat.OpenXml,版本= 2.7.2.0,区域性=中性,PublicKeyToken = 8fb06cb64d019a17'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)
当我查看解决方案项目中的相关程序集时,它引用了正确的版本(2.8.1)。查看NuGet程序包管理器,没有对旧版2.7.2的引用(4个项目对新版2.8.1的引用)。在任何有关版本2.7.2的项目引用中,我都找不到任何提及。正在执行的应用程序文件夹中的文件也是正确的文件(2.8.1)(通过查看项目属性窗口的详细信息选项卡)。在我的解决方案中的其他地方,对旧版本号的引用(显然是导致此异常的地方)可以找到吗?
附加信息:我已经grep
在执行此操作的应用程序目录(包括子目录)中的所有文件(包括二进制文件)上执行了操作,并且2.7.2
找不到字符串。
另外,当我在Visual Studio中调试此程序时,它不会抛出异常。但是,当我在部署的构建文件夹中运行它时,我得到FileLoadException。