我正在使用C#的System.Diagnostic.Process对象.
其中一个属性是Id.
在Id此产生的是不一样的PID,在所示Windows Task Manager.
为什么是这样?
一旦这个过程开始,你会看到.
它启动了另外两个非托管进程,我无法通过对象属性引用显式获取ID.
我必须搜索所有进程,通过进程名称来查找它们System.Diagnostics.Process.GetProcesses().
我试图找到一种可靠的方法来终止该进程,并通过所有相关的进程PID中,一个显示Task Manager.
有没有更好的办法?
我不能用关联的进程名称杀死所有进程,因为这可能会杀死那些与我的程序无关的进程的其他实例.
我使用 GPG 在 ASP.NET、C# 中加密文件。我的代码使用 ProcessStartInfo 执行命令,然后执行 gpg.exe,但我遇到了问题。GPG 要求我使用“y”作为选项来授权始终信任。我也尝试使用“是”(正如 GPG 帮助中所建议的,对所有问题都假设“是”),但这也不起作用。
运行 GPG 的字符串是:
"gpg --armor --output fileOutput.gpg --recipient secure@site.com --encrypt fileInput.xml --always-trust --yes"
Run Code Online (Sandbox Code Playgroud)
提示的问题是:
不确定密钥是否属于用户 ID 中指定的人。如果你真的知道你在做什么,你可以回答下一个问题是
还是要用这个键?
我怎样才能完全忽略这个问题,或者在没有提示确认的情况下强制答案为真(“是”)?
谢谢。
想知道你是否有任何关于我遇到的以下问题的想法.
这是一些超级简单的插件代码.
namespace Demo.DebugTraceBlog
{
public class TraceAndDebugDemo : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
Trace.WriteLine("Started Plugin");
Trace.WriteLine("Plugin Working");
Trace.WriteLine("Ending Plugin");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用DebugView(http://goo.gl/YRfus)来查看正在写入的跟踪消息.当我执行这个代码作为一个插件在沙箱中运行,我得到我预期的结果:三线出现在DebugView中,如果我附上VS沙盒工作进程我看到写入到输出窗口三行.现在,当我改变隔离模式无法比拟的,并且让它在W3WP.EXE过程来看,我没有得到任何输出到DebugView中,当我连接到我的w3wp.exe可以设置断点以验证它正在运行,但我不知道获取任何输出到输出窗口.
知道为什么会发生这种情况以及如何重写原因并强制非沙盒执行按预期工作的任何想法.我可以猜测它与运行CRM IIS进程内部有关,而CRM正在抑制Trace写入 - 我专门使用Trace而不是Debug来试图避免这个问题,但没有运气.
我知道我可以使用ITracingService,但这不符合我当前的要求.
来自我的"回答"问题"任务中的秒表似乎是所有任务中的附加物,想要测量任务间隔"
创建新的秒表实例之间可能存在以下区别:
Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();
Run Code Online (Sandbox Code Playgroud)
同
Stopwatch timer = new Stopwatch();
timer.Start();
Run Code Online (Sandbox Code Playgroud)
隐含的子问题:
为什么StartNew()提供方法?
我正在寻找一个简单的本机.NET错误日志记录解决方案.我对使用log4net,Elmah或任何其他日志库不感兴趣.以下是我计划使用的内容.我的问题是我的网站上的性能是至关重要的,这个流程是否会引入任何性能问题?
Global.asax中
protected void Application_Start(object sender, EventArgs e)
{
GlobalFilters.Filters.Add(new HandleExceptionsAttribute());
}
Run Code Online (Sandbox Code Playgroud)
处理异常属性:
public sealed class HandleExceptionsAttribute : HandleErrorAttribute
{
private void TraceError(Exception _this)
{
Trace.TraceError("{0} Exception {1}", DateTime.Now.ToString("M/d/yyyy h:mmtt"), _this);
}
public override void OnException(ExceptionContext filterContext)
{
var ex = filterContext.Exception;
TraceError(ex);
Task.Run(() =>
{
using (var msg = new MailMessage(ConfigurationManager.AppSettings["SendErrorsFrom"], ConfigurationManager.AppSettings["SendErrorsTo"]))
{
msg.Subject = ex.Message;
msg.Body = ex.StackTrace;
using (var smtp = new SmtpClient())
smtp.Send(msg);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
web.config中:
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="textWriterListener" type="System.Diagnostics.TextWriterTraceListener" …Run Code Online (Sandbox Code Playgroud) 我在我的日志中打印了很多行,同时调试如下:
System.Diagnostics.Debugger.Log(0, null, responseFromServer);
System.Diagnostics.Debugger.Log(0, null, t[0]);
....
Run Code Online (Sandbox Code Playgroud)
所有这些都在同一条线上印刷.我怎样才能让它们以单独的线条印刷?
我试过用
System.Diagnostics.Debugger.Log(0, null, t[0]+"\n");
Run Code Online (Sandbox Code Playgroud)
但是,它没有用.任何帮助将不胜感激 .谢谢
我试图在我的ASP.NET MVC 3应用程序(vb.net)中使用Microsoft.VisualBasic.Logging.FileLogTraceListener.它在我的开发PC中工作,但从IIS 6服务器运行时抛出错误.这是我使用的web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="requests" switchValue="All">
<listeners>
<remove name="default" />
<add name="txtfile" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="txtfile" type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
location="custom"
customlocation="D:\PROJECTS\saidproject\App_Data"
logfilecreationschedule="weekly"
/>
</sharedListeners>
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是这样的:
System.Configuration.ConfigurationErrorsException: Could not create Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL. ---> System.UnauthorizedAccessException: Access to the path 'C:\Documents and Settings\Default User\Application Data\Microsoft Corporation\Internet Information Services\6.0.3790.3959' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object …Run Code Online (Sandbox Code Playgroud) 我试图通过使用System.Diagnostics.Process在测试中运行它来捕获控制台应用程序的输出.我遇到字符编码问题."£"在测试中显示为"œ",但是当我运行控制台应用程序时,它正确显示为"£".
如果我设置Console.Out.Encoding = Encoding.Default,它在测试中有效,但在正常运行时无法正常显示.
这里发生了什么,我该如何解决?
我有以下代码可以读取一个大文件,比如超过一百万行。我正在使用 Parallel 和 Linq 方法。有没有更好的方法来做到这一点?如果是,那么如何?
private static void ReadFile()
{
float floatTester = 0;
List<float[]> result = File.ReadLines(@"largedata.csv")
.Where(l => !string.IsNullOrWhiteSpace(l))
.Select(l => new { Line = l, Fields = l.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) })
.Select(x => x.Fields
.Where(f => Single.TryParse(f, out floatTester))
.Select(f => floatTester).ToArray())
.ToList();
// now get your totals
int numberOfLinesWithData = result.Count;
int numberOfAllFloats = result.Sum(fa => fa.Length);
MessageBox.Show(numberOfAllFloats.ToString());
}
private static readonly char[] Separators = { ',', ' ' };
private static void ProcessFile() …Run Code Online (Sandbox Code Playgroud) 如何在net 4.0 c#项目中定义一个自动添加到所有TraceSource的默认TraceListener?
目前我必须列出我在App.config文件中使用的每个命名的TraceSource,如下所示:
<system.diagnostics>
<sharedListeners>
<add name="MyListener" type="MyListenerType,MyAssemblyName" />
</sharedListeners>
<sources>
<source name="Class1" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class2" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class3" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
... repeat for a gazillion classes ...
</sources>
<system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
我使用的SharedListener应该接收来自所有TraceSources的所有输出,除非另有说明.使用上述语法,这需要为每个TraceSource手动输入.
每当我介绍一个带有新TraceSource的新类时,我都必须更新App.Config.如果多个程序使用该程序集,我必须更新多个App.Config.更新这些条目时的拼写错误不会产生任何错误,它将默默地省略来自正确源的所有跟踪输出.
有没有办法可以通过App.config设置默认的TraceListener,所以如果我想偏离默认值,我只需要命名特定的TraceSources?