小编Rol*_*ain的帖子

Blazor 服务器端应用程序在重新加载期间抛出“System.InvalidOperationException:此时无法发出 JavaScript 互操作调用。...”

我在 blazor 应用程序的其中一个页面中实现了一个文件放置区域,该区域是使用 javascript 运行时接口进行处理的。为了避免内存泄漏,我有一个 javascript 方法,它会删除所有事件侦听器。这是从 dispose 函数中调用的,如下所示:

public ValueTask DisposeAsync()
{
    ViewModel.PropertyChanged -= OnPropertyChangedHandler;
    GC.SuppressFinalize(this);
    return JSRuntime.InvokeVoidAsync("deInitializeDropZone");
}
Run Code Online (Sandbox Code Playgroud)

这是可行的,但是如果我在浏览器中重新加载页面(F5 或重新加载按钮),则会出现以下异常:

fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HMI59N5RRGP7", Request id "0HMI59N5RRGP7:0000000E": An unhandled exception was thrown by the application.
      System.InvalidOperationException: JavaScript interop calls cannot be issued at this time. This is because the component is being statically rendered. When prerendering is enabled, JavaScript interop calls can only be performed during the OnAfterRenderAsync lifecycle method.
         at Microsoft.AspNetCore.Components.Server.Circuits.RemoteJSRuntime.BeginInvokeJS(Int64 asyncHandle, String identifier, String argsJson, …
Run Code Online (Sandbox Code Playgroud)

javascript c# blazor

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

Airflow 2.2.4 手动触发的 DAG 卡在“排队”状态

我的气流调度程序中有两个 DAG,它们过去一直在工作。在需要重建运行气流的 docker 容器后,它们现在陷入了困境queued。在我的例子中,DAG 是通过 REST API 触发的,因此不涉及实际的调度。

由于有很多类似的帖子,我从一个类似的问题中浏览了这个答案的清单:

  • 您是否正在运行气流调度程序?

是的!

  • 您是否正在运行气流网络服务器?

是的!

  • 您是否检查过要运行的所有 DAG 是否在 Web UI 中设置为“打开”?

是的,两个 DAGS 都显示在 WebUI 中,并且没有显示任何错误。

  • 您想要运行的所有 DAG 的开始日期是否都是过去的日期?

是的,两个 DAG 的构造函数如下所示:

dag = DAG(
    dag_id='image_object_detection_dag',
    default_args=args,
    schedule_interval=None,
    start_date=days_ago(2),
    tags=['helloworld'],
)
Run Code Online (Sandbox Code Playgroud)
  • 您想要运行的所有 DAG 是否都有 Web UI 中显示的正确时间表?

不,我通过 REST API 手动触发我的 DAG。

  • 如果其他方法都不起作用,您可以使用 Web UI 单击 dag,然后单击“图形视图”。现在选择第一个任务并单击任务实例。在“任务实例详细信息”段落中,您将看到 DAG 正在等待或未运行的原因。

这是本段向我展示的内容的输出: 在此输入图像描述

查找任务无法退出状态queued并运行的原因的最佳方法是什么?

编辑:

出于好奇,我尝试从 WebUI 内触发 DAG,现在两个运行都已执行(从 WebUI 触发的一个失败,但这是预期的,因为没有设置配置) 在此输入图像描述

airflow

8
推荐指数
0
解决办法
5479
查看次数

如何将 Minio 连接添加到 Airflow 连接?

我正在尝试将 MinIO 的运行实例添加到 Airflow 连接,我认为它应该像 GUI 中的设置一样简单(不用介意暴露的凭据,这是一个环境阻塞,之后将被更改): 在此输入图像描述

Airflow 和 minio 都在 Docker 容器中运行,它们都使用相同的 Docker 网络。按下测试按钮会导致以下错误:

测试连接时发生“ClientError”错误:调用 GetCallerIdentity 操作时发生错误 (InvalidClientTokenId):请求中包含的安全令牌无效。

我很好奇我错过了什么。我们的想法是建立此连接,然后使用存储桶进行数据感知调度(= 我想在有人将文件上传到存储桶时立即触发 DAG)

amazon-s3 docker airflow minio

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

如何调试 blazor 项目中的图像未找到错误?

在我的小型 blazor 项目中,我想在视图中显示图像,如下所示:

<img scr="img/background.jpg" class="img" alt="background">
Run Code Online (Sandbox Code Playgroud)

但我在浏览器中看到的只是“alt”文本(对不起,深色图像,这是一个深色主题的网站):

在此输入图像描述

该图像位于wwwroot/img/background.jpg。奇怪的是,在同一位置是网页的图标,我在以下head部分中调用它_Host.cshtml

<link rel="icon" type="image/x-icon" href="/image/icon.png">
Run Code Online (Sandbox Code Playgroud)

这表明一切都很好。

在其他类似的帖子(如这篇文章)之后,我已经尝试将源路径更改为以下任一路径:

  • scr="/img/background.jpg"
  • scr="~/img/background.jpg"
  • scr="img/background.jpg"
  • scr="~img/background.jpg"

这些似乎都不起作用。所以有两个问题:1.我的问题可能是什么,2.如何调试这种“错误路径”类型的错误。对于第二部分,我的直觉是使用浏览器中的“查看源”选项并查找图像,但到目前为止,当服务器将图像呈现给浏览器时,我还没有找到图像的位置。我也尝试过使用不同的浏览器,但结果相同。

编辑:直接 导航到图像https://localhost:7001/img/background.jpg也可以。由于某种原因,它只是不想从 html 中显示......

html blazor

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

blazor 服务器文件上传无提示地导致服务器崩溃

我正在我的 blazor 服务器应用程序上测试图像上传。为此,我的.razor组件如下所示:

@page "/uploadtest"

<h1>Upload Example</h1>
<AuthorizeView>
    <Authorized>
        <p>A simple example with a model, which can upload images</p>
        <label>
            Load Images:
            <InputFile OnChange="@UploadImages" multiple accept=".jpg,.jpeg,.png" />
        </label>

    </Authorized>
    <NotAuthorized>
        <p>To use this application, please <a href="Identity/Account/Login">log in</a> or <a href="Identity/Account/Register">register</a> a new account! </p>
    </NotAuthorized>
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)

我将代码隐藏在一个单独的.razor.cs文件中,该类如下所示:

public partial class UploadExample: ComponentBase
{ 
    #region Protected Properties
    [Inject]
    protected AuthenticationStateProvider AuthenticationStateProvider { get; private set; }

    [Inject]
    protected IWebHostEnvironment WebHostEnvironment { get; private set; }
    #endregion …
Run Code Online (Sandbox Code Playgroud)

c# file-upload blazor

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

C# 取消引用可能为空的引用

我对收到的警告感到有些困惑。这是相关代码:

#nullable enable
public partial class FileTable<TItem> : ComponentBase, IDisposable
{
    // bunch of class code

    public async Task FilterColumn(Func<TItem, IComparable>? itemProperty, string? searchString)
    {
        ArgumentNullException.ThrowIfNull(ViewItems);

        if (itemProperty == null)
            return;

        if (searchString == null)
            searchString = string.Empty;

        await Task.Run(() =>
        {
            foreach (var item in ViewItems)
            {
                var property = itemProperty(item.Item);

                if (property == null)
                    continue;

                item.IsVisible = property.ToString().ToLower().Contains(searchString.ToLower());
            }
        });
        StateHasChanged();
    } 
}
Run Code Online (Sandbox Code Playgroud)

我收到警告property.ToString()如您所见,我已经添加了一堆空检查,但似乎没有一个可以消除警告。据我所知,现在是不可能property的。null显然我错过了一些东西......那么什么可能触发这个警告呢?

c# asp.net visual-studio-2022 c#-10.0

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

在 Windows 上的 PyCharm 中调试 Streamlit 应用程序

我正在尝试设置一种在 PyCharm 中调试Streamlit脚本的方法。我在 Win10/64 位机器上,在使用 conda 创建的虚拟环境中工作。以默认方式运行代码并按streamlit run main.py预期工作。我已经阅读了几篇论坛帖子,最重要的是这里的相关问题

我的问题如下:上述问题的答案建议更改调试配置以使用Module name而不是Script path输入streamlit.cli作为模块。然后在参数中应该将其设置run main.py为参数。

不幸的是,这给我带来了以下错误:

没有名为streamlit.cli的模块

我在哪里找到streamlit.cli它不应该与库的默认 pip 安装一起安装?我需要单独安装吗?

任何帮助深表感谢!

python pycharm streamlit

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

如何向 blazor 组件添加自定义事件?

我根据教程在 blazor 服务器端应用程序中创建了一个选项卡控件。该控件工作正常,但是我希望能够知道活动页面何时更改。因此我在代码中添加了一个事件:

internal void ActivatePage(TabPage page)
{
    OnTabSelectionChanged();
    ActivePage = page;
}

public delegate void TabSelectionChangedEventHandler(object source, EventArgs args);
public event TabSelectionChangedEventHandler TabSelectionChanged;

protected virtual void OnTabSelectionChanged()
{
    TabSelectionChanged?.Invoke(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)

现在我想在使用该控件的 blazor 组件中执行以下操作:

<TabControl @TabSelectionChanged="MyFunction">
    <TabPage Text="tab #1">
        <!-- content -->
    </TabPage>
    <TabPage Text="tab #2"> 
        <!-- content -->
    </TabPage>
    <TabPage Text="tab #3"> 
        <!-- content -->
    </TabPage>
</TabControl>
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

c# asp.net events blazor

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

如何从本身在 Docker 容器中运行的气流运行 Docker 操作员任务?

我的 Windows 机器上运行着一个 docker 容器,它是使用官方文档中提供的 docker-compose 文件的改编版本构建的。

这工作正常,但是我想将 python 脚本(这是我的任务)从已安装的plugins文件夹移到它们自己的 docker 容器中。

为了测试这一点,我创建了一个简单的“Hello World!” 示例脚本:

import numpy as np

def main():
    print(f'Hello World')
    print(np.random.random((3, 3)))
 
if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

与以下简单的 docker 文件一起

FROM python:3.9

ADD main.py .
RUN pip install numpy

CMD ["python", "./main.py"]
Run Code Online (Sandbox Code Playgroud)

docker build -t docker-test-image . 我可以使用 CLI创建图像,运行它docker run --name docker-test-container docker-test-image会得到预期的输出:

Hello World
[[0.20923763 0.25415024 0.95603957]
 [0.01320074 0.58392589 0.24175036]
 [0.06431375 0.87276564 0.9912474 ]]
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,但是如果我用我的 docker-operator 触发 DAG,它就会失败,并且我会得到几个

FileNotFoundError: [Errno 2] …

python docker docker-compose airflow

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

具有两种状态(忙碌和进度)的 WPF 进度条

我有一个简单的程序,它有两个长时间运行的任务要执行:

  1. 复制大量包含数据库的文件夹
  2. 使用那些复制的数据库。

我想要做的是:这些长时间运行的进程在一个额外的线程中运行,其中包含更新我的 GUI 的不同变量 - 例如当前的进度条正在工作,还有我需要在 GUI 上显示的所有消息。但是,目前,我只能将进度条用于第二个任务(使用数据库) - 文件夹和文件的复制以递归方式完成(为每个需要复制的子文件夹调用自身)我不知道会复制多少文件夹。因此,在复制进行时,我希望进度条显示忙碌指示(像这样),完成后它应该是 dbs 上工作的标准进度条。

这样的解决方案是否可能以一种干净的方式出现?

c# wpf progress-bar

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

如何将匿名对象传递给泛型函数?

根据Tim Corey 的ASP.NET 和dapper 教程,我采用了一个通用函数来将数据存储在 SQL Server 数据库中,以返回所存储对象的 ID:

public async Task<T> SaveData<T, U>(
    string storedProcedure,
    U parameters,
    string connectionId = "DefaultDataConnection")
{
    using IDbConnection connection = new SqlConnection(_configuration.GetConnectionString(connectionId));

    T ID = await connection.ExecuteScalarAsync<T>(storedProcedure, parameters, commandType: CommandType.StoredProcedure);

    return ID;
}
Run Code Online (Sandbox Code Playgroud)

问题如下:在教程的原始代码中,可以在不声明泛型参数类型的情况下调用该方法。然而,对于附加的泛型返回类型,这是没有必要的。问题是,这些方法通常是用匿名类型对象调用的,我不知道如何调用该方法:

// this is within the insert method of my class, which is responsible for handling the images table:
int insertedID = await _db.SaveData<int, ????>("dbo.spImage_Insert", new { image.UserID, image.FileName, image.UploadDate });
Run Code Online (Sandbox Code Playgroud)

应该怎样做呢?我是否必须使用显式类型而不是匿名对象?

编辑:返回值是通用的,因为 ID 可以是 …

c# generics anonymous-types dapper

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