小编use*_*135的帖子

从Process.Start()调用时,C#应用程序随机挂起

我已设置Windows服务来管理自定义.Net任务。组织为:

-Windows Service监视计划,并根据需要启动工作程序.exe。

-Worker .exe(轻量级Winform应用程序)使用命令行参数来拉起DLL(插件)并运行一些代码。

这已经好几个月了。我最近将其迁移到Server 2012(从2008 IIRC起)-这可能无关紧要,但这很难说。自迁移后的一段时间以来,我遇到了一个问题,其中worker .exe在被process.start()调用后“启动”,但没有到达我的代码。没有错误或任何东西,它似乎在应用程序加载期间冻结。

启动它的服务代码是相当标准的。

// Create a temp folder and copy the executable to it
// (so the source exe isn't always in use and can be swapped out)

Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Path.Combine(temp.Path, Path.GetFileName(ExecutablePath));
psi.Arguments = CommandLineArgs.ConcatenateList(" ");
psi.UseShellExecute = false;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
psi.ErrorDialog = false;
psi.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo = psi;
p.Start();

// read …
Run Code Online (Sandbox Code Playgroud)

.net c# windows-services windows-server-2012

5
推荐指数
1
解决办法
2140
查看次数

.Net Core Api - 基于请求值的自定义 JSON 解析器

我希望OkObjectResult通过我拥有的自定义 JSON 解析器运行来自 api 的所有响应。解析器依赖于一些特定于请求的数据——即用户的角色。它实际上类似于控制器上的 Authorize 属性,但用于从 API 传递到 UI 的数据传输对象。

我可以通过 AddJsonOptions 在配置服务中添加解析器,但它无权访问那里的用户信息。

如何将基于请求的值传递给该解析器?我是在寻找某种自定义中间件,还是其他什么?

作为示例,如果我有一个带有一些自定义属性装饰器的对象,如下所示:

public class TestObject
{
    public String Field1 => "NoRestrictions";
    [RequireRoleView("Admin")]
    public String Field2 => "ViewRequiresAdmin";
}
Run Code Online (Sandbox Code Playgroud)

并使用不同的角色调用我的自定义序列化器,如下所示:

var test = new TestObject();
var userRoles = GetRoles(); // "User" for the sake of this example
var outputJson = JsonConvert.SerializeObject(test, 
                    new JsonSerializerSettings { 
                        ContractResolver = new MyCustomResolver(userRoles) 
                    });
Run Code Online (Sandbox Code Playgroud)

然后输出 JSON 将跳过用户无法访问的任何内容,如下所示:

{
    "Field1":"NoRestrictions",
    // Note the absence of Field2, since it has [RequireRoleView("Admin")]
}
Run Code Online (Sandbox Code Playgroud)

c# json.net asp.net-core-webapi

3
推荐指数
1
解决办法
2772
查看次数