我有一个使用 IdentityServer 的 Blazor WebAssembly 应用程序,该应用程序附带模板作为我的身份验证服务。我遇到一个问题,一些用户在尝试登录时看到“尝试登录时出错:''”。我让用户清除了 cookie 和缓存,但他们在所有浏览器中仍然遇到这个问题。奇怪的是,大多数用户都能够登录,但只有一小部分用户遇到该错误。另一个奇怪的事情是,似乎如果他们使用其他设备,例如手机、另一台电脑或 iPad,它就可以工作。什么可能导致此问题?我在尝试调试这个问题时遇到了麻烦,因为我无法在我的终端上复制它,并且到目前为止没有看到任何日志来获取任何信息。
该应用程序使用 Linux Docker 容器托管在 Google Cloud Platform 中。
先感谢您
编辑:这是我的启动课程
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
private const string XForwardedPathBase = "X-Forwarded-PathBase";
private const string XForwardedProto = "X-Forwarded-Proto";
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your …Run Code Online (Sandbox Code Playgroud) 我们正在编写一个负责获取存储过程名称的存储过程,并返回包含该存储过程列及其数据类型的结果。但是,我们遇到了执行动态查询以返回存储过程结果的问题,但是我们无法将其存储在临时表中!
您可以在下面看到我们的查询:
DECLARE @ProcName VARCHAR(100)='spGetOraganizationsList',
@ParamName VARCHAR(100),@DataType VARCHAR(20),
@Query NVARCHAR(MAX)='EXEC '+'spGetOraganizationsList '
SELECT PARAMETER_NAME,DATA_TYPE
INTO #Tmp
FROM information_schema.PARAMETERS
WHERE SPECIFIC_NAME=@ProcName
DECLARE ParamCursor CURSOR
FOR SELECT * FROM #Tmp
OPEN ParamCursor
FETCH NEXT FROM ParamCursor
INTO @ParamName,@DataType
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Query=@Query+@ParamName+'=Null,'
FETCH NEXT FROM ParamCursor INTO @ParamName,@DataType
END
CLOSE ParamCursor
DEALLOCATE ParamCursor
DROP TABLE #Tmp
EXEC sp_executesql @Query
Run Code Online (Sandbox Code Playgroud)
问题是我无法将其结果存储在临时表中,并且OPENROWSET不接受变量。
我想为在 mvc 控制器中调用的 RedirectToAction() 方法编写一个扩展方法。在这种方法中,我想用我的消息设置TempData并有类似这样的 RedirectToAction("Index").WithMessage(message)
我写了这段代码
public static class ActionResultExtension
{
public static IActionResult WithMessage(this IActionResult result,string message)
{
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是我不知道我应该如何访问上下文
我想测试何时在类中调用析构函数,当它是一个简单的类时,一切都会按预期进行-当我们离开实例的作用域析构函数时。
但是,当我们添加静态字段时,它不会发生。谁能解释这种情况背后的概念?
public class Test
{
~Test(){}
private static string StaticField="";
private float NonStaticField;
}
Run Code Online (Sandbox Code Playgroud)
对于非静态且具有值的其他字段会发生什么?他们永远不会被清洗吗?
我测试了通过Controller调用析构函数的方法,如下所示
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
var ts = new Test();
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
当我在离开Index析构函数后删除静态字段时被调用。
编辑:调用析构函数有点奇怪,因为它在静态方法和非静态方法中的行为不同,如果我在静态方法内创建实例并离开范围,则调用析构函数。
当我想设置最大服务器内存时,我收到以下错误消息:
配置选项“最大服务器内存”不存在,或者它可能是高级选项
sql查询如下:
exec sp_configure 'max server memory', 1024
reconfigure
Run Code Online (Sandbox Code Playgroud) 在一次采访中,我被要求定义以下代码的输出:
byte data= 100;
dynamic val = data;
Console.WriteLine(val.GetType())
Run Code Online (Sandbox Code Playgroud)
我回答说它不会改变val变量的数据类型,但是当我在控制台中测试时,它确实改变了!
val变量更改为 System.Byte
但更有趣的是,当您将val数据类型更改为 int32 时,仍然没有任何变化System.Int32!
byte data= 100;
int val = data;
Console.WriteLine(val.GetType())
Run Code Online (Sandbox Code Playgroud)
这些转换的逻辑是什么?
我编写了一个通过 调用另一个过程的过程link server,它具有 try catch 块,并且 catch 块在大多数错误的情况下都可以很好地工作,例如,当我想“将 NULL 值插入到不可为空的列”时,catch 块是成功执行并将错误结果记录到我的表中,但是当涉及到时link server timeout,catch 块不起作用,我不知道我在哪里错过了导致此问题的事情。
你可以看一下我的流程
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE @BeforeCall DATETIME,@AfterCall DATETIME,@DiffSec BIGINT,@CycleId BIGINT
DECLARE @TBL TABLE(Date INT,Time INT,Branch INT,Amount BIGINT)
----------------Get Last CycleId------------------------------------------
SELECT TOP 1 @CycleId=CycleId FROM dbo.BranchesResetDate_History
ORDER BY CycleId DESC
SET @CycleId=ISNULL(@CycleId,0)+1;
------------------------------------------------------------------
-----------------Get Reset Date--------------------------------------------
SET @BeforeCall=GETDATE()
INSERT INTO @TBL
(
Date,
Time,
Amount,
Branch
)
EXEC [AB_TO_FK].[xxxx].dbo.GetResetDate
SET @AfterCall=GETDATE()
SET @DiffSec=DATEDIFF(SECOND,@BeforeCall,@AfterCall)
-------------------------------------------------------------------
--------------------Log Execute Result To History------------------ …Run Code Online (Sandbox Code Playgroud) 长话短说,我有以下课程:
public class FlowBasePipeline<T>
{
private List<StepBaseBusiness<T>> stepList = new List<StepBaseBusiness<T>>();
public void Push(StepBaseBusiness<T> step)
{
stepList.Add(step);
}
public void Trigger(T result)
{
foreach (var step in stepList )
{
result = step.Execute(result);
if (!result.IsSuccess)
{
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是强迫程序员首先调用Push方法,然后让他们访问Trigger方法,在这种情况下不允许以下场景
var pipeline=new FlowBasePipeline<MyStepResult>();
pipeline.Trigger()// Trigger method is not recognized
Run Code Online (Sandbox Code Playgroud)
我们应该首先调用Push方法
var pipeline=new FlowBasePipeline<MyStepResult>();
pipeline.Push(new MyStep()).Trigger()//Now Trigger is recognized
Run Code Online (Sandbox Code Playgroud)
我所做的:
我按如下方式应用了显式接口方法实现以使其工作:
public interface IBasePipeline<T> where T:BaseResult,new()
{
void Trigger();
IBasePipeline<T> Push(StepBaseBusiness<T> step);
} …Run Code Online (Sandbox Code Playgroud)