小编Hac*_*ash的帖子

无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel._Application”

我收到一个错误:

无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败,因为 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件上的查询接口调用因以下错误而失败:加载类型库/DLL 时出错。(来自 HRESULT 的异常:0x80029C4A (TYPE_E_CANTLOADLIBRARY))。

当我尝试在 VB.NET 中打开 Excel 应用程序时,我尝试重新安装 excel 但没有解决问题。

vb.net excel

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

将基于特定大小的日志轮换为带日期/时间戳的副本

碰巧的是,有一个BAT文件在Windows Server 2008上运行某个命令行工具,并将输出重定向到一个不断增长的日志,我想在每次日志增长到一定大小时都将其旋转。毫无疑问,将BAT文件更改为CMD会很耗时间和精力。因此,我不得不编辑该BAT文件。

下面的所有内容都在Windows 7和2008上进行了测试。

尝试了以下内容:

for %%I in (Log.txt) do @echo %%~zI >> size.tmp
set /p logSIZE=<size.tmp
del size.tmp
if %logSIZE% GTR 100 (
  echo OK
)
Run Code Online (Sandbox Code Playgroud)

当时的测试Log.txt是157个字节,因此它得到了回应OK。然后我通过将100增加到200进行了否定测试,但没有回声OK。到目前为止,一切都很好。

接下来,我尝试将日期和时间戳连接到文件名中:

For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dateStamp=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set timeStamp=%%a%%b)
echo Log_%dateStamp%_%timeStamp%.txt
Run Code Online (Sandbox Code Playgroud)

这也像一种魅力。下一步是将两个脚本合并为一个:

for %%I in (Log.txt) do @echo %%~zI >> size.tmp
set /p logSIZE=<size.tmp
del size.tmp
if %logSIZE% GTR 100 ( …
Run Code Online (Sandbox Code Playgroud)

batch-file environment-variables

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

使用 AcquireTokenSilent 刷新 access_token

我有一个 asp.netcore MVC 应用程序,它将 access_token 传递给下游 API。

经过一番努力,我弄清楚了如何使用 MSAL.Net 获取 access_token。但访问令牌每小时都会过期,因此我必须刷新它。所以我使用 AcquireTokenSilent 接受帐户作为参数。

我的 Startup.cs

public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
                options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            })
            .AddCookie(options =>
            {
                options.Events= new CookieAuthenticationEvents()
                {
                    OnValidatePrincipal = OnValidatePrincipal
                };
            })
            .AddOpenIdConnect(options =>
            {
                options.Authority = "https://login.microsoftonline.com/{tenantId}/v2.0";
                options.ClientId = Configuration["AzureAD:ClientId"];
                options.ClientSecret = Configuration["AzureAD:ClientSecret"];
                options.CallbackPath = Configuration["AzureAD:CallbackPath"];
                options.ResponseType = "code id_token";
                options.Scope.Add("openid");
                options.Scope.Add("profile");
                options.Scope.Add("offline_access");
                options.Scope.Add("api://{ClientidOfAPI}/user_impersonation"); …
Run Code Online (Sandbox Code Playgroud)

c# oauth-2.0 azure-active-directory asp.net-core

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

将 NLog.ILogger 转换为 Microsoft.Extensions.Logging

我在解决方案中使用 NLog 作为日志记录提供程序,但某些项目已迁移到 Microsoft.Extensions.Logging。我们仍在评估是否将其余代码也迁移到此,但与此同时,我们需要以某种方式将实例转换NLog.ILoggerMicrosoft.Extensions.Logging.ILogger<T>实例。

我知道使用NLog.Extensions.Logging包可以很容易地完成,添加 NLog 作为提供程序:

ILoggerFactory factory = LoggerFactory.Create(builder =>
{
    builder.AddNLog();
});
return factory.CreateLogger<MyClass>();
Run Code Online (Sandbox Code Playgroud)

但这种方法实际上使用静态 NLog 内容创建一个 NLog 提供程序,而不是NLog.ILogger我从其他代码部分收到的实例。

那么,有没有办法在这个转换中使用这个NLog.ILogger实例呢?我错过了什么吗?

c# logging nlog microsoft-extensions-logging

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

Access 2007 中的颜色常量

MS Access 2007 表单设计视图属性表公开了一些颜色选项,我似乎无法找到用于在代码中使用它们的常量。具体来说:Text DarkText LightBackground Dark HeaderBackground Light Header

是否存在这些预定义常量?我在对象浏览器或帮助中似乎没有它们。否则,有没有人知道他们的 RGB 十六进制值?

ms-access vba colors ms-access-2007

4
推荐指数
2
解决办法
7539
查看次数

使用 vba 更改字段的值

我想通过单击相关表单中的按钮将特定表中的日期更改为今天的日期。所以按钮所做的就是更改我数据库中某个字段中的日期。有没有一种简单的方法可以用 VBA 做到这一点?

*更新

好吧,我在我的 VBA 代码中写了这个:

CurrentDb.Execute "UPDATE Machines SET LastMaintenance = Date() WHERE MachineID = MachineID.Value"
Run Code Online (Sandbox Code Playgroud)

Machines”是我的表,“ LastMaintenance”包含必须更改为今天日期的日期的列,“ MachineID”记录MachineID.Value的名称和“ ”绑定到同一记录的文本框的名称。

当我单击按钮时,出现此错误:

“没有足够的参数。1 个预期。”

ms-access vba

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

Blazor Wasm 托管错误 抱歉,该地址没有任何内容

尝试在服务器端控制器中调用 API 方法时出现以下错误

我在这里做错了什么。

此外,我还收到“抱歉,调用 /swagger 时此地址没有任何内容”

索引剃刀

 var httpclient = new HttpClient();
            httpclient.BaseAddress = new Uri("https://localhost:7191/");
            var result =  httpclient.GetStringAsync($"api/Account/LoginUser?userName={userName}&Email={Email}");
Run Code Online (Sandbox Code Playgroud)

我的控制器

using BlazorChatApp.Shared;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;

namespace BlazorChatApp.Server.Controllers
{

   
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class AccountController : ControllerBase
    {

      
        [HttpGet]
        [AllowAnonymous]
        public async Task<ActionResult> LoginUser(string userName, string Email)
        {
          
          
            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, userName),
                new Claim(ClaimTypes.Email, Email),
                new Claim("UserDefined", "whatever"),
            };

           
            var claimsIdentity = new ClaimsIdentity(claims, …
Run Code Online (Sandbox Code Playgroud)

c# blazor-webassembly

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