我有一个JObject用作调用RESTful Web服务的模板.这JObject是通过解析器创建的,因为它被用作模板告诉用户端点模式是什么样的,我不得不想办法保留所有属性,这就是为什么我将它们的值默认为null.例如,这就是对象最初的样子:
{
"Foo":{
"P1":null,
"P2":null,
"P3":null,
"P4":{
"P1":null,
"P2":null,
"P3":null,
},
"FooArray":[
{
"F1":null,
"F2":null,
"F3":null,
}
]
},
"Bar":null
}
Run Code Online (Sandbox Code Playgroud)
然后,用户能够填补他们需要单独的领域,如Foo.P2和Foo.P4.P1:
{
"Foo":{
"P1":null,
"P2":"hello world",
"P3":null,
"P4":{
"P1":1,
"P2":null,
"P3":null,
},
"FooArray":[
{
"F1":null,
"F2":null,
"F3":null,
}
]
},
"Bar":null
}
Run Code Online (Sandbox Code Playgroud)
意思是他们只关心这两个领域.现在我想将此模板(JObject)序列化为JSON字符串,但只想要填充的那些字段显示出来.所以我尝试了这个:
string json = JsonConvert.SerializeObject(template,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.我遇到了这个问题,并意识到null对象中的值是一个实际JToken类型,而不是真正的类型null,这是有道理的.但是,在这种非常特殊的情况下,我需要能够摆脱这些"未使用"的字段.我尝试手动迭代节点并删除它们,但这也不起作用.请注意,我使用的唯一托管类型是JObject …
我在名为ProjectA(ConsoleApplication)和ProjectB(ClassLibrary)的解决方案中有两个项目.ProjectA引用了ProjectB.一般来说,ProjectA调用ProjectB中的方法来执行一些操作并将结果返回给ProjectA.但有时候,我需要ProjectB向ProjectA发送一些"附加"信息(更具体地说是调用Console.WriteLine()ProjectA中的方法).为了实现这一点,我需要在ProjectB中引用ProjectA,但是当我尝试这样做时,我收到以下错误:
A reference to ProjectA could not be added. Adding this project as a reference would cause a circular dependency.
我理解整个耦合概念,并且获取此消息确实有意义,但是,在某些情况下,我需要向ProjectA发送其他信息.有任何想法吗?
我正在设计一个使用Windows Communication Foundation实现的客户端 - 服务器体系结构.在其中一个用例中,服务器需要请求客户端的状态,这意味着它需要SendStatus()在客户端上调用该方法并询问其状态.我只是想知道这个用例是否可以使用WCF实现,而无需在客户端创建独立服务.我正在尝试避免套接字,因为客户端是后台服务,并且基本上始终连接到服务器.我知道WCF最终使用套接字进行通信,但我特意尝试使用WCF,因为这更像是一个概念证明.
我想到的一种解决方法是客户端可以SendClientStatus() 在服务器上调用该方法并每隔5秒左右发送一次状态.但是,这似乎不是一个好方法.任何帮助,将不胜感激.
我有一个用ASP.NET Web API编写的休息服务.
我想要一个计划任务连接到端点,如:
www.example.com/jobs/job1
Run Code Online (Sandbox Code Playgroud)
我希望能够设置每隔12小时说一次的间隔时间.
是否可以使用计划任务执行此操作?
我想避免创建一个Windows服务只是为了ping一个休息端点.
我正在开发一个项目,我的任务是添加一个高级搜索和过滤选项,允许用户通过指定任意数量的条件来查询Windows事件列表中的所需结果.
我们的想法是每个Windows事件日志中有一些特性,如LogName,Source,CreatedDate,Message,Number,等(的一部分FieldItem枚举).总共有4种 possbile数据类型:String,DateTime,Integral (Int/Long),和EventEntryType.这四种数据类型中的每一种都有自己的选择器操作数集合(SelectorOperator枚举的一部分).这是一张图片,可以让您更好地了解整体结构如何:

我最初实现这个想法是这样的:
public static class SearchProvider
{
public static List<EventLogItem> SearchInLogs(List<EventLogItem> currentLogs, SearchQuery query)
{
switch (query.JoinType)
{
case ConditionJoinType.All:
return SearchAll(currentLogs, query);
case ConditionJoinType.Any:
return SearchAny(currentLogs, query);
default:
return null;
}
}
private static List<EventLogItem> SearchAll(List<EventLogItem> currentLogs, SearchQuery query)
{
foreach (SearchCondition condition in query.Conditions)
{
switch (condition.FieldName)
{ …Run Code Online (Sandbox Code Playgroud) 今天我们将新创建的ASP.NET应用程序部署到服务器,很快我们意识到存在一个与安全相关的奇怪问题导致应用程序崩溃.这是一个内部应用程序,我们使用Impersonation来管理用户访问资源的方式.但是,当用户尝试访问他们完全控制的文件夹时,应用程序会抛出"拒绝访问"异常.
事实上是一个异常,AggregateException并且被抛入一个方法,该方法Parallel.ForEach用于枚举列表和正文内部,它尝试访问该文件夹,但此时模拟上下文被更改,工作线程作为应用程序池运行身份,无权访问该文件夹,因此异常.
为了证实这一点,我查看了身体之前和之内的过程身份Parallel.ForEach:
string before = WindowsIdentity.GetCurrent().Name;
Debug.WriteLine("Before Loop: {0}", before);
Parallel.ForEach(myList, currentItem =>
{
string inside = WindowsIdentity.GetCurrent().Name;
Debug.WriteLine("Inside Loop: {0} (Worker Thread {1})", inside, Thread.CurrentThread.ManagedThreadId);
});
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,这就是打印出来的内容:
Before Loop: MyDomain\ImpersonatedUser
Inside Loop: NT AUTHORITY\SYSTEM (Worker Thread 8)
Inside Loop: MyDomain\ImpersonatedUser (Worker Thread 6)
Inside Loop: MyDomain\ImpersonatedUser (Worker Thread 7)
Inside Loop: NT AUTHORITY\SYSTEM (Worker Thread 9)
Inside Loop: NT AUTHORITY\SYSTEM (Worker Thread 10)
Inside Loop: MyDomain\ImpersonatedUser (Worker Thread 7)
Inside Loop: MyDomain\ImpersonatedUser …Run Code Online (Sandbox Code Playgroud) .net c# impersonation task-parallel-library parallel.foreach
我正在用C编写一个程序,基本上为给定的文件名列表创建一个存档文件.这与arlinux中的命令非常相似.这是存档文件的样子:
!<arch>
file1.txt/ 1350248044 45503 13036 100660 28 `
hello
this is sample file 1
file2.txt/ 1350512270 45503 13036 100660 72 `
hello
this is sample file 2
this file is a little larger than file1.txt
Run Code Online (Sandbox Code Playgroud)
但是我在尝试从存档中提取文件时遇到了困难.假设用户想要提取file1.txt.我们的想法是它应该获取文件名的索引/位置(在本例中为file1.txt),跳过58个字符以获取文件内容,读取内容并将其写入新文件.所以这是我的问题:
1)如何在归档文件中获取文件名的索引/位置?请注意,不允许使用重复的文件名,因此我不必担心有两个不同的内容.
2)如何在阅读文件时跳过多个字符(在本例中为58)?
3)如何判断文件内容何时结束?即我需要它来阅读内容并在file2.txt/标题前停止.
我在主视图上有一个ComboBox和一个Button,我想在按钮上应用一个样式,这样当组合框索引设置为1时,按钮变为可见(最初它是隐藏的).这是我的XAML代码:
<Grid>
<StackPanel Orientation="Vertical" Margin="10">
<ComboBox Name="comboBox"/>
<Button Name="myBtn" Content="Hello" Visibility="Hidden">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
有人在这里问了一个关于这个的问题,而且我做了几乎相同的事情,但它不起作用,即使索引更改为1,按钮仍然隐藏.最初在后面的代码中填充了comobox有2件物品.任何帮助表示赞赏.
我正在尝试逐字节读取文件并将其写入另一个文件.我有这个代码:
if((file_to_write = fopen(file_to_read, "ab+")) != NULL){
for(i=0; i<int_file_size; i++){
curr_char = fgetc(arch_file);
fwrite(curr_char, 1, sizeof(curr_char), file_to_write);
}
}
Run Code Online (Sandbox Code Playgroud)
int_file_size我想要读取的字节数在哪里,arch_file是我正在读取的文件,并且curr_char是一个char指针.
但这不起作用.我在循环的第一次迭代中得到Segmentation fault(core dumped)错误.我很确定我的fwrite()语句有问题.任何帮助,将不胜感激.
我正在尝试将字符串值存储到变量中.要定义变量,我使用:
: define CREATE 0 , ;
define x
Run Code Online (Sandbox Code Playgroud)
我可以轻松地存储整数/浮点值来x使用
10 x !
Run Code Online (Sandbox Code Playgroud)
要么
10.0e x f!
Run Code Online (Sandbox Code Playgroud)
要访问它我使用@或f@.现在我正在尝试存储一个字符串值:
s" hello world" x !
Run Code Online (Sandbox Code Playgroud)
这个问题是它将两个值推送到堆栈(因为它是一个计数字符串),但x !只会将项目存储在顶部,这是字符串的长度.这是危险的,因为堆栈内容可能已被x引用的时间修改,使得地址不直接低于长度(坏!),因此type会失败.所以我的问题是,有没有办法将两个值(地址和长度)存储到x?或者是否有不同的数据类型/操作数可以让我实现这一目标?
任何帮助表示赞赏.