- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建 Blazor 项目,起初一切正常,直到我需要注入(inject) IJSRuntime
进入 cs
文件。
Microsoft.JSInterop;
...
...
public BaseService(IJSRuntime jSRuntime)
{
}
BaseService
在另一个名为
AuthenticationServices
的服务中继承这也使用了一个名为
IAuthentication
的接口(interface).因此
using Microsoft.JSInterop;
public class AuthenticationServices : BaseService, IAuthentication
{
public AuthenticationServices(IJSRuntime jSRuntime) : base(jSRuntime)
{
}
}
Startup.cs
具有此代码的文件
services.AddSingleton<IAuthentication, AuthenticationServices>();
InvalidOperationException: Cannot consume scoped service 'Microsoft.JSInterop.IJSRuntime' from singleton '...IAuthentication'
最佳答案
Blazor 中的依赖注入(inject)有 3 种不同的生命周期策略。
scope
在该范围内将只是一个实例。通常在大多数情况下,创建范围是为了处理用户 session (客户端 Blazor)或用户连接(服务器端 Blazor)。您可以与每个 HTTP 请求 (ASP.NET) 的范围进行比较。
new
相同.
Transient
服务可以消费 Transient,
范围 and
单例服务。 Scoped
服务可以消费 Scoped
和 Singleton
服务。但不能消费Transient
服务。 Singleton
服务只能使用 Singleton
服务。但不能消费Transient
和 Scoped
服务。 IJSRuntime
在 Blazor 中注册为
Scoped
服务,因此只能由
Scoped
使用和
Transient
服务。
AuthenticationServices
Scoped
服务,或摆脱
IJSRuntime
作为构造函数参数。
关于c# - 无效操作异常 : Cannot consume scoped service 'Microsoft.JSInterop.IJSRuntime' from singleton '...IAuthentication' in Blazor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60574103/
我创建了一个新的 ASP.NET 5 MVC Web 应用程序,它托管一个带有一些 .net blazor wasm 组件的 razor 类库和一个名为 Elsa 的第 3 方库。一切似乎都正常,但是
我在 JsInterop 中创建了自己的自定义数组: @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Array") pu
尝试使用 JsInterop 通过 Javascript 与 LibGDX 项目进行通信。我正在关注“将 Java 类型导出到 JavaScript”示例 here .它不起作用:未捕获的 Refer
我有这些在 ASP.NET Core 服务器和 Javascript 之间发送的数据结构。数据以使用 websocket 消息序列化的 JSON 格式发送。 在这个例子中,对象有一个名为 Text 的
我正在使用 Gwt,想尝试 JsInterop。 我定义了一个用@JsType注释的简单POJO。Idea 在项目中看到注释类型,但构建失败,并出现注释类未定义的错误。 GWT 版本 2.8.1。GW
我这里有一些原生 JS 测试代码 (mydialog.js) var MyDialog = { foo : function() { console.log("foo"
我正在使用 GWT 2.8,并且正在为 javascript 库开发包装器。 我试图包装的 javascript 类的属性之一是一个函数。我希望包装器尽可能接近 native javascript。我
我正在使用 GWT,并尝试导出一个 java 类以在我的 HTML 中的 javascript 中使用。这是我想使用 jsinterop 导出到 javascript 的 java 类。 packag
查看此文档: https://docs.google.com/document/d/10fmlEYIHcyead_4R1S5wKGs1t2I7Fnp_PaNaa7XTEk0/edit 导出一个java
在 ASP.Net Core 中,我正在尝试从 C# 代码为 Google map 构建基本绑定(bind)。使用 JSInterop 我可以成功地将字符串传递给 JavaScript 函数,但是当我
问题涉及客户端 Blazor 组件。该组件包含一个被组件变量隐藏的 div( bool 打开)。 我需要组件在组件代码文件中显示 div 后运行一些 Javascript(以便调整它在屏幕上的位置),
问题涉及客户端 Blazor 组件。该组件包含一个被组件变量隐藏的 div( bool 打开)。 我需要组件在组件代码文件中显示 div 后运行一些 Javascript(以便调整它在屏幕上的位置),
我目前正在将我的 Gwt 2.7 项目升级到 2.8-beta1 并且我正在尝试从 JSNI 重构 Javascript 插件包装器到 JsInterop。 这里是 JSNI 包装器: public
我正在运行一个 GWT 应用程序,我想用 JsInterop 快速测试一些东西。 具体来说,我导出了一个枚举: package com.mypackage.test @JsType enum MyEn
您好,我正在尝试使用 FileReader API 从本地存储加载文件。我已直接在 HTML 页面中测试了 js 方法,并且它有效。 但是,当从 Blazor - JSRuntime 调用它时,我收到
尝试让 Blazor 服务器端应用程序正常运行。我有一个 uploader 组件,但在客户端解决每个 promise 后它不会 InvokeAsync 。它等待所有图像加载,然后调用 C# 方法。如何
我有这段代码,我想用它来初始化()一个第三方 Javascript 库: @JsType(namespace = JsPackage.GLOBAL, name = "Kinvey", isNative
我想像这样包装一个 javascript 代码: map.addMarker({ lat: -12.043333, lng: -77.028333, d
我正试图让它按照 Microsoft's documentation 工作. 下面的脚本代码在现有的 React 应用程序中完美运行,我正在尝试将该应用程序移植到 Blazor。脚本加载并初始化 -
我是 .NetCore Blazor 的新手,正在尝试将 ExampleJsInterop JavaScript 代码转换为 TypeScript。我在转换以下代码时遇到问题: window.exam
我是一名优秀的程序员,十分优秀!