小编Nul*_*nce的帖子

Blazor 绑定值:事件 oninput

我正在尝试使用EditForm.

出于某种原因,oninput如果使用InputText,似乎不会调用该事件,但它使用一个简单的input元素工作。

我错过了什么吗?

这是一个 HTML 示例:

<EditForm Model="@Model" OnValidSubmit="@OnValidSubmit" id="authorize">
    <h1 class="mb-3">
       <span class="d-block">Authorize</span>
    </h1>
    <DataAnnotationsValidator />
    <div class="form-group">
        <label class="sr-only" for="AuthorizeUsername">Username</label>
        <div class="input-group mb-2">
            <div class="input-group-prepend">
                <div class="input-group-text"><i class="fas fa-user"></i></div>
            </div>
            <InputText type="text" class="form-control" id="AuthorizeUsername" placeholder="Username" @bind-value="@Model.Username" @bind-value:event="oninput" />
        </div>
    </div>
    <div class="form-group">
        <label class="sr-only" for="AuthorizePassword">Password</label>
        <div class="input-group mb-2">
            <div class="input-group-prepend">
                <div class="input-group-text"><i class="fas fa-asterisk"></i></div>
            </div>
            <InputText type="password" class="form-control" id="AuthorizePassword" placeholder="Password" @bind-value="@Model.Password" @bind-value:event="oninput" />
        </div>
    </div>
    <div class="form-group">
        <ValidationSummary />
        <button …
Run Code Online (Sandbox Code Playgroud)

c# blazor

7
推荐指数
2
解决办法
1万
查看次数

将 Windows 服务移植到 .NET core

所以我有一个 Windows 服务应用程序,并想开始将其移植到 .NET Core。该应用程序使用套接字、自托管 mvc、计时器等长时间运行。我计划将应用程序转换为 .NET core,以便能够在 Windows/Linux 等上运行它。问题是正确的方法是什么实施服务代码?例如,我需要有一个提供 MVC/API 服务的 Web 主机以及处理套接字、事件等的实际服务实现。我发​​现目前的方法是从BackgroundService https://learn 继承服务代码类。 microsoft.com/en-us/dotnet/api/microsoft.extensions.hosting.backgroundservice?view=aspnetcore-3.0 所以问题是BackgroundService是否是我应该查看的还是有其他更合适的方法?

谢谢。

c# windows-services asp.net-core-mvc

7
推荐指数
1
解决办法
1923
查看次数

CreateProcessAsUser进程退出-1073741502

我有一项服务,负责在用户登录和控制台会话连接后启动/监控用户会话中的交互过程.服务设置为自动启动,以便在用户登录前启动并运行.首次登录时一切正常,我可以正确启动/重启用户进程.

什么情况是,如果用户退出并重新登录服务不再能正常启动用户进程.CreateProcessAsUser不返回任何错误,但是一旦用户进程启动,它将退出-1073741502(0xC0000142)退出代码.

如果我重新启动该服务,那么它再次能够启动用户进程而没有任何错误.

如果需要,我可以发布服务如何创建用户进程的完整源代码.

编辑

    try
            {
                //WE ALREADY HAVE A CLIENT ATTACHED , DONT START A NEW ONE
                if (ClientProcessId != null)
                    return;

                var ACTIVE_CONSOLE_SESSION = ListSessions()
                    .Where(SESSION => SESSION.State == WTS_CONNECTSTATE_CLASS.WTSActive)
                    .FirstOrDefault();

                if (ACTIVE_CONSOLE_SESSION == null)
                    return;

                CONSOLE_SESSION_ID = (uint)ACTIVE_CONSOLE_SESSION.Id;

                IntPtr USER_TOKEN = IntPtr.Zero;
                IntPtr ENVIRONMENT = IntPtr.Zero;
                IntPtr LINKED_TOKEN = IntPtr.Zero;

                try
                {
                    try
                    {
                        if (!Wtsapi32.WTSQueryUserToken(CONSOLE_SESSION_ID.Value, out USER_TOKEN))
                            throw new Win32Exception();
                    }
                    catch (Win32Exception wex)
                    {
                        EntryPoint.TryWriteToCacheLog($"{nameof(Wtsapi32.WTSQueryUserToken)} : console session id {CONSOLE_SESSION_ID} error {wex.ErrorCode} …
Run Code Online (Sandbox Code Playgroud)

c# winapi

6
推荐指数
1
解决办法
650
查看次数

ReadOnlySequence&lt;byte&gt; 解析

所以我开始尝试使用 Span 来解析消息代码。虽然 api 看起来很容易理解,但我似乎找不到任何方法将切片转换为值。例如,我想将 ReadOnlySequence 转换为 int。当然,我可以调用 ToArray 并使用 BitConverter,但这实际上会创建一个新数组,这正是我试图避免的。

这是我如何获取切片的示例

        var DHCP_OP = buffer.Slice(0, 1);          
        var DHCP_HTYPE = buffer.Slice(1, 1);
        var DHCP_HLEN = buffer.Slice(2, 1);
        var DHCP_HOPS = buffer.Slice(3, 1);
        var DHCP_XID = buffer.Slice(4, 4);
        var DHCP_SECS = buffer.Slice(8, 2);
        var DHCP_FLAGS = buffer.Slice(10, 2);
        var DHCP_CI_ADDR = buffer.Slice(12, 4);
        var DHCP_YI_ADDR = buffer.Slice(16, 4);
        var DHCP_SI_ADDR = buffer.Slice(20, 4);
        var DHCP_GI_ADDR = buffer.Slice(24, 4);
        var DHCP_CH_ADDR = buffer.Slice(28, 16);
        var DHCP_SNAME = buffer.Slice(44, 64);
        var DHCP_FILE = …
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
5428
查看次数

Blazor JWT 身份验证

我正在尝试找出使用 Blazor (WASM) 实施 JWT 身份验证的正确方法。在浏览完文档后,我了解了内置组件的工作原理,但我仍然不清楚整个情况。因此,在我的场景中,我有一个将使用的 API 服务器,API 服务器可以颁发 JWT 令牌,并且它们可用于在需要时对端点进行身份验证。

所以现在我正在尝试找出每个组件的正确角色。首先,我们有 AuthenticationStateProvider,据我了解,该组件有责任从服务器获取 JWT 令牌,或者如果本地存储令牌,它还可以在需要时处理令牌刷新吗?

现在,由于我将使用类型化 HTTP 客户端,因此我将使用 IHttpClientFactory,同时我还将使用 AuthorizationMessageHandler 将令牌附加到所需的 HTTP 客户端实例。

当我尝试处理 IAccessTokenProvider 时,事情对我来说崩溃了,因为我知道一旦创建 HTTP 客户端并且即将发出 http 请求,就会调用默认实现。尚不清楚的是这个 IAccessTokenProvider 将如何获取令牌。所以问题是我是否应该创建自己的 IAccessTokenProvider 实现,如果是的话它应该如何处理令牌。正如我所说,我不会使用任何内置的身份验证提供程序,而是将拥有自己的 JWT 身份验证系统。

谢谢。

c# blazor

4
推荐指数
1
解决办法
3159
查看次数

同步方法的 ValueTask

我正在使用并发字典来存储数据来实现一个简单的查找服务。由于使用此服务的大多数方法都是异步的,因此我正在考虑使用ValueTask<TResult>.

伪代码:

public ValueTask<string> GetResultAsync(string key)
{
 return ValueTask.FromResult(_dictionary.FirstOrDefault(p => p.Key == key).Value
}
Run Code Online (Sandbox Code Playgroud)

这种方法有意义吗?有什么注意事项吗?

c# asynchronous task valuetask

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

.NET Core 和 .NET 之间的二进制序列化

所以我有键和值的字典,其中值是一个对象,当在 .NET Core 和 .NET 之间交换二进制数据时,反之亦然,序列化失败

System.Runtime.Serialization.SerializationException: 'Unable to load type System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.IDictionary`2[[SharedLib.HostPropertyType, DataInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] required for deserialization.'

这很有意义,因为目标类型位于另一个库中,问题是是否有办法在不创建自定义类型的情况下避免这种情况?

谢谢。

c# .net-core

-1
推荐指数
1
解决办法
166
查看次数