当SMPT服务器具有有效证书时,“根据validation过程”获取“远程证书无效”

这似乎是一个常见的错误,但是当我找到一个解决方法(见下文)时,我无法确定我首先得到它的原因。 我正在将SMTPfunction写入我们的应用程序,并且我正在尝试将SSLfunction添加到我们已有的工作SMTP中。 我正在测试使用我们公司的MS Exchange服务器,特别是在其上启用的webmail选项。 我可以通过我的代码在内部发送电子邮件,不会对我的连接进行身份validation并匿名发送,但是由于我们公司的政策,这些电子邮件不会转发到外部电子邮件地址。 除此之外,我正在为我们的客户编程,他们并不都允许开放中继和/或匿名连接。 我相信Exchange服务器正在使用显式SSL / TLS。 我已尝试telnet到端口25上的服务器地址并获得文本响应,人类可读的响应,根据我之前的一些搜索,这意味着它使用显式SSL / TLS。 我有以下测试代码 SmtpClient SMTPClient = new SmtpClient(webmailaddress); SMTPClient.Port = 25; SMTPClient.UseDefaultCredentials = true; SMTPClient.EnableSsl = true; System.Net.Mail.MailMessage Message = new ` System.Net.Mail.MailMessage(emailFrom,emailTo,subject,body); SMTPClient.Send(Message); 在我寻找解决方案期间,我遇到了“远程证书根据validation程序无效”。 使用Gmail SMTP服务器 从中我得到以下代码…… ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); public static bool ValidateServerCertificate(object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) […]

Process.Start()启动的应用程序没有得到参数

使用C#,我试图使用Process.Start()将命令行参数传递给新进程: string path = @”C:\Demo\Demo.exe”; string arguments = “one two three”; ProcessStartInfo startInfo = new ProcessStartInfo { FileName = path, Arguments = arguments }; var process = Process.Start(startInfo); 我的C应用程序Demo.exe只是回显命令行参数: int main( int argc, char *argv[] ) { int count=0; // Display each command-line argument. printf( “\nCommand-line arguments:\n” ); for( count = 0; count < argc; […]

字典,列表或数组?

我正在写一个性能至关重要的服务,我不确定什么是最快的。 我有几个对象(50-200),每个对象都有一个ID(整数,例如84397或23845)。 拥有一个Dictionary,一个KeyValue对列表或一个列表,其中索引设置为ID,其余的具有空值或具有相同想法的数组会更快吗?

GC.KeepAlive与使用

在他关于防止应用程序的多个实例的文章中 ,Michael Covington提出了以下代码: static void Main() // args are OK here, of course { bool ok; m = new System.Threading.Mutex(true, “YourNameHere”, out ok); if (! ok) { MessageBox.Show(“Another instance is already running.”); return; } Application.Run(new Form1()); // or whatever was there GC.KeepAlive(m); // important! } 他解释说,GC.KeepAlive(m)是防止垃圾收集器尽早收集互斥锁所必需的,因为没有额外的引用。 我的问题:将使用互斥锁包装做同样的事情吗? 也就是说,以下是否也会阻止GC从我身下拉出地毯? static void Main() // args are OK […]

如何从WCF操作合同中检索客户端的计算机名称?

我目前正在查看OperationContect.Current属性。 是否有(嵌套)属性将始终返回客户端的计算机名称? 我目前正在使用net.tcp绑定,但希望将来支持其他绑定。 使用.NET 3.5 SP1

从WPF中的Winforms组件处理未处理的exception

我的应用程序是用WPF构建的,但它包含了我们编写的一些WinForms组件。 在其中一个WinForms组件中未处理exception时,它会使应用程序崩溃。 我已经为WPF事件实现了DispatcherUnhandledException 。 这很好,因为它允许我显示错误并将exception标记为Handled以避免崩溃。 我可以使用非WPF例外做类似的事情。 我希望过去的标准WinForms对话框允许用户继续或完全应用程序? 编辑 :WinFormsexception会在DispatcherUnhandledException被捕获,但将e.Handled设置为true并不会阻止应用程序崩溃。

将文件从MVC 5下载到Angular 2

我有C#后端和ASP.Net MVC的经验。 现在我正在第一次尝试Angular 2.这需要时间,但我喜欢它的大部分内容。 现在我被困在一个简单的文件下载上。 我已经阅读了我在Stackoverflow上找到的所有示例,但我仍然没有得到我的例子。 在服务器端,我有这个C#代码: public ActionResult DownloadPicture(long id) { var bytes = System.IO.File.ReadAllBytes(“images\dummy.jpg”); return GetAttachement(bytes, “DummyFile.jpg”); } private ActionResult GetAttachement(byte[] bytes, string fileName) { var contentType = MimeMapping.GetMimeMapping(fileName); var contentDisposition = new System.Net.Mime.ContentDisposition { FileName = fileName, Inline = true }; Response.AppendHeader(“Content-Disposition”, contentDisposition.ToString()); return File(bytes, contentType); } 在客户端,我有这个Typescript代码: public pictureDownload(id: number): void […]

从另一个Thread更新MainWindow中的进度条

我知道这个问题已被问过几次,我花了一整天时间试图理解其他答案,但由于我对C#和WPF很新,所以到目前为止没有任何帮助。 我将尝试尽可能多地解释我的确切问题,这将直接帮助我。 在我的MainWindow.xaml中,我有一个进度条和一些按钮启动一个新线程和一个长计算: 现在在我的MainWindow.xaml.cs中: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { Thread thread = new Thread(new ParameterizedThreadStart(MyLongCalculation)); ParameterClass myParameters = new ParameterClass(); thread.Start(myParameters); } public void MyLongCalculations(object myvalues) { ParameterClass values = (ParameterClass)myvalues; //some calculations } } public class ParameterClass { //public variables… […]

将Powerpoint节目嵌入到C#应用程序中

我希望能够将powerpoint演示文稿嵌入到C#表单(WinForms)中。 基本上我们有一个52’显示器,我们的想法是在一个角落里我们将有一个PPT循环,然后其他三个角落将显示来自程序本身的信息。 我曾预料到这很简单,但似乎我错了。 我被建议使用WebBrowser控件,但这不起作用,而是将powerpoint文件视为下载,即给我一个“保存,打开”对话框。 有什么建议? AK

从cryptostream读取到流的末尾

我在使用下面的代码时遇到了一些麻烦。 我有一个临时位置的文件,需要加密,此function加密该数据,然后存储在“pathToSave”位置。 在检查时似乎没有正确处理整个文件 – 我的输出中缺少一些位,我怀疑它与while循环没有贯穿整个流有关。 顺便说一句,如果我尝试在while循环后调用CryptStrm.Close(),我会收到exception。 这意味着如果我尝试解密文件,我会得到一个已经在使用的文件错误! 尝试了所有平常和我在这里看到类似的问题,任何帮助都会很棒。 谢谢 public void EncryptFile(String tempPath, String pathToSave) { try { FileStream InputFile = new FileStream(tempPath, FileMode.Open, FileAccess.Read); FileStream OutputFile = new FileStream(pathToSave, FileMode.Create, FileAccess.Write); RijndaelManaged RijCrypto = new RijndaelManaged(); //Key byte[] Key = new byte[32] { … }; //Initialisation Vector byte[] IV = new byte[32] { … […]