小编Sou*_*rer的帖子

SpringCloud 2020.0.2升级产生测试错误

我正在尝试将项目从 SpringCloud BOM 升级2020.0.12020.0.2

当我更改 BOM 并重新构建时,我在 JUnit 测试中收到一个错误,说spring.config.import没有为 configserver 设置新参数。

这个项目不是ConfigServer,也没有使用ConfigServer(评论配置客户端)

这是测试中报告的错误 contextLoads()

java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132)
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:124)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
    .. Many more
Caused by: org.springframework.cloud.config.client.ConfigServerConfigDataMissingEnvironmentPostProcessor$ImportException: No spring.config.import set
    at org.springframework.cloud.config.client.ConfigServerConfigDataMissingEnvironmentPostProcessor.postProcessEnvironment(ConfigServerConfigDataMissingEnvironmentPostProcessor.java:60)
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:100)
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:86)
    ... Many more
Run Code Online (Sandbox Code Playgroud)

这是我的 build.gradle

plugins {
    id 'org.springframework.boot' version '2.4.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example.microservices.composite.product'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
    maven {
        url 'https://repo.spring.io/milestone'
    } …
Run Code Online (Sandbox Code Playgroud)

spring spring-test spring-boot spring-cloud

9
推荐指数
3
解决办法
8799
查看次数

Azure SQL:仅当登录用户不存在时才创建

我正在尝试创建一个自动化脚本,用于在现有实例上创建 Azure SQL 数据库。

我知道我可以使用基于 CLI 的自动化,但我需要对创建内容和时间进行更多控制。

现在我停止了登录创建。我只想在不存在的情况下创建登录用户(如果存在则更改密码)。

这是我的代码:

IF NOT EXISTS (SELECT name FROM sys.sysusers WHERE name='$(dbUserName)')
    BEGIN
        CREATE LOGIN $(dbUserName) WITH PASSWORD='$(dbUserPassword)';
    END
ELSE
    BEGIN
        ALTER LOGIN $(dbUserName) WITH PASSWORD='$(dbUserPassword)';
    END
Run Code Online (Sandbox Code Playgroud)

我的问题是 sys.sysusers 视图检查数据库用户,而不是登录用户。我试图找到哪个系统目录视图包含登录用户,但我找不到(我也尝试过database_principals)

注意:我找到了几种本地 SQL Server 的替代方案,但它们不适用于 Azure SQL

sql-server authentication azure azure-sql-database

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

Blazor WebAssembly 日志记录不支持 SetMinimumLevel

我有一个直接从模板创建的 Blazor WebAssembly 应用程序,并且我添加了日志记录过程,如Blazor WebAssembly 日志记录中所述

我在我的类 Program 方法 Main 中添加了行 builder.Logging.SetMinimumLevel

public class Program
{
    const string serverHttpClientName = "GoodSales.ServerAccessApi";

    public static async Task Main(string[] args)
    {
        var builder = WebAssemblyHostBuilder.CreateDefault(args);
        IConfiguration configuration = builder.Configuration;

        // JMA: Configure logging
        builder.Logging.SetMinimumLevel(LogLevel.Debug);
Run Code Online (Sandbox Code Playgroud)

注意:我没有添加特定的记录器,因为导航器控制台日志对我来说就足够了。

然后,我在我的剃刀组件中添加了日志记录

@using Microsoft.AspNetCore.SignalR.Client
@using GoodSales.Services
@inject NavigationManager NavigationManager
@using Microsoft.Extensions.Logging;
@inject ILogger<NavMenu> logger;
@inject ILoggerProvider LoggerProvider
Run Code Online (Sandbox Code Playgroud)

并在初始化方法中添加了测试线

protected override async Task OnInitializedAsync()
  {

      logger.LogDebug("LogDebug test");
      logger.LogInformation("LogInformation test");
      logger.LogWarning("LogWarning test");
Run Code Online (Sandbox Code Playgroud)

但是,在导航器控制台中,我只看到 LogInformation 和 LogWarning,但看不到 LogDebug。

我缺少什么?

logging blazor-client-side blazor-webassembly

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

无法在 Ubuntu 20.04 上使用 Net5(OpenSSL 连接问题)

我已将应用程序从 NetCore 3.1 和 Ubuntu 18.04 迁移到 Net5 和 Ubuntu 20.04。

当 HttpWebRequest 对象调用 GetResponse 方法时,应用程序开始失败。

我发现了来自 Microsoft 的通知,警告有关行为的重大变化,请参阅

https://learn.microsoft.com/en-US/dotnet/core/compatibility/cryptography/5.0/default-cipher-suites-for-tls-on-linux

https://medium.com/siberians-pro/how-to-use-tlsv1-on-ubuntu-20-04-133c2898ad7中有一篇非常有趣的文章(Linux 通用,与 Net5 无关)

但两者都不适合我。

到目前为止我已经尝试过的:

  1. 我创建了一个特定的本地 openssl.cnf 文件,其中包含以下内容
openssl_conf = openssl_init
    
[openssl_init]
ssl_conf = ssl_sect
    
[ssl_sect]
system_default = system_default_sect
    
[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=1
Run Code Online (Sandbox Code Playgroud)
  1. OPENSSL_CONF我已经导出了指向该文件的变量
export OPENSSL_CONF=/var/www/spider/openssl.cnf 
Run Code Online (Sandbox Code Playgroud)
  1. 我正常启动我的代码
dotnet Spider.dll
Run Code Online (Sandbox Code Playgroud)
  1. 我得到了例外
fail: Spider.Program[0]
      [19/12/2020 08:50:52.724]: Error getting response from https://www.boe.es/diario_boe/xml.php?id=BOE-S-20201216
      System.Net.WebException: The SSL connection could not be established, see inner exception.
       ---> System.Net.Http.HttpRequestException: The SSL …
Run Code Online (Sandbox Code Playgroud)

dotnet-httpclient tls1.2 asp.net-core .net-5 ubuntu-20.04

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

如何使用 MockMvcRequestBuilders 在 Spring Boot 2.0 中向模型添加查询参数

我正在尝试使用 MockMvc 做一个简单的测试类。但我陷入了一件非常简单的事情(但文档没有帮助)。

我的基本代码是

  @SpringBootTest
  @AutoConfigureMockMvc
  class RecommendationServiceApplicationTests {
    private static final Logger LOG = LoggerFactory.getLogger(RecommendationServiceApplicationTests.class);
    
    private final String url = "/recommendation?productId=%d";
    static final int PRODUCT_OK = 1;
    static final int PRODUCT_KO = 0;
    static final int PRODUCT_NOT_FOUND = 113;

    @Autowired
    private MockMvc mockMvc;

    // Check OK response
    @Test
    public void getRecommendationsOK() throws Exception {
        MockHttpServletRequestBuilder requestBuilder;
        MvcResult result;
        String contentResponse;
        Recommendation[] recommendations;

        requestBuilder=
        MockMvcRequestBuilders
            .get("/recommendation?productId=1")
            .accept(MediaType.APPLICATION_JSON);

        result = this.mockMvc
            .perform(requestBuilder)
            .andDo(MockMvcResultHandlers.print())
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andReturn();

    }
  }
Run Code Online (Sandbox Code Playgroud)

这样,代码运行良好,但是当我尝试使用参数化查询时,我找不到方法

我已经尝试过(没有成功)

.get("/recommendation?productId=",PRODUCT_OK)
.get("/recommendation?productId={}",PRODUCT_OK) …
Run Code Online (Sandbox Code Playgroud)

mocking spring-test-mvc spring-boot

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