如何:在C#应用程序代码中禁用/启用WCF跟踪

我花了一段时间才能做到这一点,所以我决定分享一个解决方案,因为它可能会为其他人节省几天的反复试验。 问题:我希望能够在我的C#.NET应用程序中启用/禁用WCF跟踪并选择跟踪输出文件名。 我不希望用户编辑.config文件,那里有太多的错误空间。 这是一个解决方案。 应用程序的.config文件: 我的C#代码: using System; using System.IO; using System.Diagnostics; namespace MyNamespace { public class MyXmlListener : XmlWriterTraceListener { public static String TraceOutputFilename = String.Empty; public static Stream MakeOutputStream() { if (String.IsNullOrWhiteSpace(TraceOutputFilename)) return Stream.Null; return new FileStream(TraceOutputFilename, FileMode.Create); } public MyXmlListener () : base(MakeOutputStream()) { } } } 要启用WCF跟踪到文件,请在创建WCF对象之前设置TraceOutputFilename: MyXmlListener.TraceOutputFilename = “trace.svclog”; 我从这个论坛获得了很大的好处,我希望这篇文章付出代价! […]

有没有办法在Visual Studio中更改IntelliSense中列出的构造函数的顺序?

我已经定义了一个具有多个构造函数的类,以便在实例化对象后底层接口是不可变的。 我希望其中一个构造函数成为用户在Visual Studio中键入以下内容时的“默认”构造函数: var obj = new MyClass( Dim obj As New MyClass( 目前,当我去实例化对象时,构造函数没有按照我在类中声明的顺序列出(在Visual Studio IntelliSense中)。 有没有办法标记我的构造函数,以便它们的方法在Visual Studio IntelliSense实例化期间以特定顺序出现?

如何识别驱动器是虚拟的还是物理的

这来自我关于IMAPI2的另一个问题是否可以识别DVD / CD驱动器是虚拟的而不是物理的?

打印PDF使用itextsharp创建

我的目标是在客户端计算机上打印RDLC报告而不进行预览。 我无法使用ReportViewer打印按钮,因为它需要安装ActiveX对象,并且没有权限。 所以,我正在使用ITextSharp从渲染的LocalReport返回的字节数组创建PDF,并添加一个JavaScript用于打印。 在调试期间,我可以看到PDF已生成并有2页,一切看起来都还可以。 我没有收到任何错误,该function退出确定,但它不打印。 我做错了什么,或者我错过了什么? 这是我的代码: string jsPrint = “var pp = this.getPrintParams();pp.interactive= pp.constants.interactionLevel.silent;this.print(pp);”; byte[] bytes = report.Render(“PDF”, null, out mimeType, out encoding, out extension, out streamids, out warnings); using (MemoryStream ms = new MemoryStream()) { Document doc = new Document(); PdfWriter writer = PdfWriter.GetInstance(doc, ms); doc.SetPageSize(PageSize.A4); doc.Open(); PdfContentByte cb = writer.DirectContent; PdfImportedPage page; […]

使用URI和Da​​taContract类参数编写Web服务方法

如何获取Web服务方法来访问URI和复杂POST数据中的参数? 我有一个Web服务方法,在URI中有一些参数: “/api/{something}/{id}” 我还有一个标有DataContract / Member属性的类,我希望webservice方法接受它。 请注意,我的类包含一个也标有DataContract / Member属性的子类。 [DataContract] public class MoreData{ [DataMember] public string SomeString { get; set; } [DataMember] public SubClass SubData {get; set;} } 我的方法声明如下: [OperationContract] [WebInvoke( Method = “POST”, UriTemplate = “/api/{something}/{id}”)] public MyWebSvcRetObj Update(string something, string id) 如何让我的Update方法也接受MoreData类? 我已经能够编写如下方法: [OperationContract] [WebInvoke( Method = “POST”)] public MyWebSvcRetObj Update(MoreData IncomingData) 但只有当URI没有指定任何参数时,URI才会显示 […]

以下方法之间的调用不明确:Identical.NameSpace.InitializeComponent()和Identical.NameSpace.InitializeComponent()

好吧,我怀疑这可能是Visual Studio的事情,但必须有一些原因。 我从默认项目列表中创建了一个ListBox(右键单击项目,或项目中的文件夹 – >添加 – >新项目 – > Xaml ListBox)。 我立刻得到了一条带有错误的红色波浪线: “错误2以下方法或属性之间的调用不明确:’Identical.NameSpace.ListBox1.InitializeComponent()’和’Identical.NameSpace.ListBox1.InitializeComponent()’C:\ Documents and Settings \ ouflak \ My Documents \ Visual Studio 2010 \ Projects \ Identical \ NameSpace \ ListBox1.xaml.cs 27“ 所有相关代码都是自动生成的,并且出错的原因是两个自动生成的文件之间存在冲突:ListBox1.g.cs和ListBox1.designer.cs,其中public void InitializeComponent()都在两者中声明。 当然,在这种情况下代码无法编译。 只需删除ListBox1.designer.cs就可以了,我想继续前进。 但我的问题是:为什么此代码会自动生成此错误? 我希望自动生成的任何东西都能够构建和编译,而无需触摸项目或任何代码。 对于您可以添加的几乎所有其他toobox项目,情况就是如此。 那么为什么要使用内置错误生成此代码呢? 我们应该找到一些方法来完成这项工作吗? 这段代码仅仅是一个建议,由IDE用户/开发人员来决定细节吗? 这是生成的代码:ListBox1.xaml: Item 1 Item 2 Item 3 ListBox1.g.cs: namespace Identical.Namespace […]

WPF Datagrid绑定错误与列标题中的点

我有一个.Net数据表,我用它作为WPF数据网格的源。 我遇到的问题是数据表中的一些列标题包含点。 将数据表绑定到数据网格时,将显示包含点的列,但不包含任何数据。 在网上阅读后,我发现点是数据绑定引擎中使用的特殊符号,并且混淆了数据网格对表的绑定。 我试过手动创建datagrid列+绑定并添加方括号来否定点。 这工作正常,但在我对列进行排序时会中断。 本文提到挂钩到排序事件以删除排序事件上的[]。 没有太多关于如何实现这一点的细节,我所做的尝试似乎没有摆脱错误。 如果您需要更多信息,请告诉我。

C#左侧的分配必须是变量,属性或索引器

我无法找到能够解决这一特定情况的post。 也许我真的很累。 无论如何,我正在为WinForms进行登录validation。 我有一个名为DBFunctions.cs的类,它保存数据库连接信息等。我坚持使用C#中的“赋值的左侧必须是变量,属性或索引器”错误。 请在下面找到我当前的代码。 提前致谢。 namespace emsdashboard { public partial class Login : Form { public Login() { InitializeComponent(); } //Contains the SQL string and other information to process //user login. public object VerifyUser(string userId, string password) { DBFunctions dbInfo = new DBFunctions(); bool status = false; string verifyUserQry = “SELECT * FROM Employee […]

Process.Start()什么时候可以返回null?

我有一些代码通过使用Process.Start(ProcessStartInfo)启动进程。 我从文档中看到,如果重用现有进程,此方法可以返回null。 [返回]与流程资源关联的新Process组件,如果没有启动流程资源,则返回null(例如, 如果重用现有流程 )。 现有流程重复使用以及在何种情况下会发生什么意味着什么?

处理包含美元字符的正则表达式转义替换文本

string input = “Hello World!”; string pattern = “(World|Universe)”; string replacement = “$1″; string result = Regex.Replace(input, pattern, replacement); 有了以下示例,结果将是”Hello World!” ,因为$1被第一组(World|Universe)取代,但我想要的结果是”Hello $1!” Regex.Escape方法用于转义正则表达式模式,而不是替换,因为它可以转义其他字符,如斜杠和其他正则表达式模式字符。 对我的问题的明显解决方法是让我的替换等于”$$1″ ,并将达到”Hello $1!” ,但我想知道美元符号是否是我必须逃脱的唯一值(假设replacement是用户生成的,我不提前知道),或者是否有帮助函数已经执行此操作。 有没有人知道一个函数来逃避Regex.Replace(string input, string pattern, string replacement)使用的替换值?