Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。

12
检查路径是否有效
我只是想知道:我正在寻找一种验证给定路径是否有效的方法。 (注意:我不想检查文件是否存在!我只想证明路径的有效性-因此该位置是否可能存在文件)。 问题是,我在.Net API中找不到任何内容。由于Windows支持多种格式和位置,因此我宁愿使用MS-native。 由于该功能应能够检查: 相对路径(./) 绝对路径(c:\ tmp) UNC路径(\ some-pc \ c $) NTFS-Limitations的完整路径为1024个字符-如果我没有记错,超过该路径将使许多内部Windows函数无法访问该文件。使用资源管理器重命名仍然有效 Volume GUID路径:“ \?\ Volume {GUID} \ somefile.foo 有人有这样的功能吗?
110 c#  .net  winapi  path 

13
如何检查DateTime是否今天发生?
是否有更好的.net方法来检查DateTime是否已“今天”发生,然后再检查以下代码? if ( newsStory.WhenAdded.Day == DateTime.Now.Day && newsStory.WhenAdded.Month == DateTime.Now.Month && newsStory.WhenAdded.Year == DateTime.Now.Year ) { // Story happened today } else { // Story didn't happen today }
110 c#  .net  datetime 

4
如何使用TPM(受信任的平台模块)加密字节
如何使用机器的TPM模块加密字节? 加密数据 Windows提供了一个(相对)简单的API来使用该CryptProtectDataAPI 加密Blob ,我们可以包装一个易于使用的函数: public Byte[] ProtectBytes(Byte[] plaintext) { //... } 的细节ProtectBytes比您可以轻松使用它的想法重要得多: 这是我想通过保存在其中的密钥加密的字节 System 还给我加密的斑点 返回的Blob是未记录的文档结构,其中包含解密和返回原始数据所需的所有内容(哈希算法,密码算法,salt,HMAC签名等)。 为了完整起见,以下ProtectBytes是使用Crypt API来保护字节的示例伪代码实现: public Byte[] ProtectBytes(Byte[] plaintext) { //Setup our n-byte plaintext blob DATA_BLOB dataIn; dataIn.cbData = plaintext.Length; dataIn.pbData = Addr(plaintext[0]); DATA_BLOB dataOut; //dataOut = EncryptedFormOf(dataIn) BOOL bRes = CryptProtectData( dataIn, null, //data description …


19
SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:5.5.1是否需要身份验证?
我想从我的应用程序发送电子邮件,并且我编写了以下代码来发送邮件 MailMessage msg = new MailMessage(); msg.From = new MailAddress("mymailid"); msg.To.Add("receipientid"); msg.Subject = "test"; msg.Body = "Test Content"; msg.Priority = MailPriority.High; SmtpClient client = new SmtpClient(); client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com"); client.Host = "smtp.gmail.com"; client.Port = 587; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = true; client.UseDefaultCredentials = true; client.Send(msg); 我在本地主机上运行它,所以我在发送它时犯了什么错误。 当我发送按钮时,它给出了类似的错误 …
110 c#  smtp 

4
NUnit与xUnit
是:堆栈溢出:是:nUnit vs xUnit? 之间有什么区别的NUnit和xUnit.net?开发其中两个而不是一个的意义何在? 我读过xUnit是由NUnit的发明者开发的: xUnit.net是.NET Framework的单元测试工具。由NUnit 的原始发明人撰写 另一方面: NUnit是适用于所有.Net语言的单元测试框架..当前的生产版本2.6版是此基于xUnit的单元测试工具的第七个主要版本。 那么真相在哪里?
110 c#  .net  nunit  xunit 

24
如何自动调整DataGridView控件中的列的大小并如何允许用户调整同一网格上的列的大小?
我正在Windows窗体(C#2.0而不是WPF)上填充DataGridView控件。 我的目标是显示一个网格,该网格将单元格整齐地填充所有可用宽度-即,在右下方没有未使用的区域(深灰色),并根据其包含的数据适当调整每一列的大小,但还允许用户调整任何列的大小根据他们的喜好。 我试图通过将每列的AutoSizeMode设置为DataGridViewAutoSizeColumnMode.AllCells来实现此目的,但我将其中之一设置为DataGridViewAutoSizeColumnMode.Fill才能确保网格的整个区域被数据整齐地填充。(我不介意,当用户尝试调整此列的大小时,它会弹回以确保始终使用水平空间的大小。) 但是,正如我提到的,加载后,我希望允许用户调整列的大小以适合自己的需求-在为每个列设置这些AutoSizeMode值时,用户似乎无法再调整这些列的大小。 我试过不设置所有允许调整大小的列的AutoSizeMode,但不会根据单元格包含的数据设置初始大小。加载数据后将网格的AutoSizeMode更改回“ Not Set”时,会发生相同的结果。 是否缺少我可以自动设置默认列宽和用户调整大小的设置,还是在填充DataGridView控件时必须使用另一种技术?


21
避免不带参数的SQL注入
在这里,我们正在讨论在代码中使用参数化的sql查询的另一种讨论。在讨论中,我们有两个方面:我和其他一些人说我们应该始终使用参数来防止sql注入,而其他人则认为不需要。相反,他们希望在所有字符串中用两个撇号替换单个撇号,以避免sql注入。我们的数据库都运行Sql Server 2005或2008,我们的代码库在.NET Framework 2.0上运行。 让我给您一个简单的C#示例: 我希望我们使用这个: string sql = "SELECT * FROM Users WHERE Name=@name"; SqlCommand getUser = new SqlCommand(sql, connection); getUser.Parameters.AddWithValue("@name", userName); //... blabla - do something here, this is safe 其他人想这样做时: string sql = "SELECT * FROM Users WHERE Name=" + SafeDBString(name); SqlCommand getUser = new SqlCommand(sql, …

8
如何在设计时可靠地确定使用var声明的变量的类型?
我正在为emacs中的C#完成(智能)功能。 这个想法是,如果用户键入一个片段,然后通过特定的按键组合要求完成,则完成设施将使用.NET反射来确定可能的完成。 这样做需要知道完成的事物的类型。如果是字符串,则存在一组已知的可能方法和属性。如果是Int32,则具有单独的集合,依此类推。 使用语义,emacs中提供了一个代码lexer / parser程序包,我可以找到变量声明及其类型。鉴于此,很容易使用反射来获取类型上的方法和属性,然后向用户显示选项列表。(好吧,在 emacs中执行操作不是很简单,但是使用在 emacs 中运行powershell进程的功能会变得容易得多。我编写了一个自定义.NET程序集进行反射,将其加载到powershell中,然后在运行时在elisp中运行emacs可以通过comint将命令发送到powershell并读取响应。因此emacs可以快速获得反射结果。) 当代码用于var完成事物的声明时,问题就来了。这意味着未明确指定类型,并且补全将不起作用。 使用var关键字声明变量时,如何可靠地确定使用的实际类型?只是要清楚一点,我不需要在运行时确定它。我想在“设计时”确定它。 到目前为止,我有这些想法: 编译并调用: 提取声明语句,例如`var foo =“ a string value”;` 连接语句`foo.GetType();` 动态将生成的C#片段编译为新程序集 将程序集加载到新的AppDomain中,运行片段并获取返回类型。 卸下并丢弃组件 我知道该怎么做。但是,对于编辑器中的每个完成请求,这听起来都是非常沉重的。 我想我不需要每次都需要新的AppDomain。我可以将单个AppDomain重复用于多个临时程序集,并在多个完成请求中分摊设置和拆除它的成本。这更多是对基本概念的调整。 编译并检查IL 只需将声明编译到模块中,然后检查IL,以确定编译器推断出的实际类型。这怎么可能?我将用什么来检查IL? 还有更好的主意吗?注释?建议? 编辑 -对此进行进一步的考虑是不可接受的,因为调用可能会产生副作用。因此,必须排除第一个选项。 另外,我想我不能假设存在.NET 4.0。 更新 -上面没有提到的正确答案,但由埃里克·利珀特(Eric Lippert)轻轻指出,是实现完整的保真类型推断系统。这是在设计时可靠地确定var类型的唯一方法。但是,这也不容易做到。因为我没有幻想要尝试构建这样的东西,所以我选择了选项2的快捷方式-提取相关的声明代码,并进行编译,然后检查生成的IL。 实际上,这对于完成方案的相当一部分是有效的。 例如,假设在以下代码片段中,?是用户要求完成的位置。这有效: var x = "hello there"; x.? 完成将认识到x是一个String,并提供适当的选项。它通过生成并编译以下源代码来完成此操作: namespace N1 { static class dmriiann5he …



3
如何在XDocument中使用XPath?
还有一个类似的问题,但是在我看来,该解决方案没有解决:XDocument,XPath和名称空间的怪异之处 这是我正在使用的XML: <?xml version="1.0" encoding="utf-8"?> <Report Id="ID1" Type="Demo Report" Created="2011-01-01T01:01:01+11:00" Culture="en" xmlns="http://demo.com/2011/demo-schema"> <ReportInfo> <Name>Demo Report</Name> <CreatedBy>Unit Test</CreatedBy> </ReportInfo> </Report> 下面是我认为应该可以正常运行的代码,但是没有成功... XDocument xdoc = XDocument.Load(@"C:\SampleXML.xml"); XmlNamespaceManager xnm = new XmlNamespaceManager(new NameTable()); xnm.AddNamespace(String.Empty, "http://demo.com/2011/demo-schema"); Console.WriteLine(xdoc.XPathSelectElement("/Report/ReportInfo/Name", xnm) == null); 有人有什么想法吗?谢谢。
109 c#  .net  xml  xpath  linq-to-xml 

3
读取提交到ASP.Net表单的帖子数据
我在asp.net应用程序中有一个有效的登录表单。标准内容,带有用户名和密码文本框以及用于处理登录的按钮。工作良好。 我有一个新要求,即允许用户从一个单独的纯HTML页面(不属于asp.net应用程序的一部分)输入用户名和密码。我计划使用标准的html(表单,输入,提交按钮等)来实现这一目标。表单操作将是我的asp.net登录页面的URL,其方法将是POST。 我想在asp.net登录表单的页面后面的C#代码中(大概在Page_Load事件中)做的是检查该页面的请求是否包含要传递的用户名和密码值。如果是,则我需要读取这些值并处理登录,就像有人单击了asp.net页面上的登录按钮一样。如果没有,那么我将照常显示登录表单。 如何检查我的页面请求中是否存在用户名和密码,并读取它们。
109 c#  asp.net  post 

2
为什么要创建异步WebAPI操作而不是同步操作?
我在创建的Web API中执行以下操作: // GET api/<controller> [HttpGet] [Route("pharmacies/{pharmacyId}/page/{page}/{filter?}")] public CartTotalsDTO GetProductsWithHistory(Guid pharmacyId, int page, string filter = null ,[FromUri] bool refresh = false) { return delegateHelper.GetProductsWithHistory(CustomerContext.Current.GetContactById(pharmacyId), refresh); } 通过以下方式通过Jquery Ajax调用完成对此Web服务的调用: $.ajax({ url: "/api/products/pharmacies/<%# Farmacia.PrimaryKeyId.Value.ToString() %>/page/" + vm.currentPage() + "/" + filter, type: "GET", dataType: "json", success: function (result) { vm.items([]); var …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.