Skip to main content

6 posts tagged with ".net core"

View All Tags

[.net core template project]Console Application

· One min read
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>

<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.2.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="2.0.4" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="7.1.0" />
</ItemGroup>

</Project>
{
"Logging": {
"LogLevel": {
"Default": "Information",
"System": "Error",
"Microsoft": "Error"
}
},
"Serilog": {
"MinimumLevel": "Warning",
"WriteTo": [
{
"Name": "Elasticsearch",
"Args": {
"nodeUris": "http://127.0.0.1:9200",
"indexFormat": "consoleapp-{0:yyyy.MM.dd}",
"autoRegisterTemplate": true
}
}
]
},
"ConnectionStrings": {
"Redis": "127.0.0.1:6379"
}
}
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
using System;
using System.IO;
using System.Threading;

namespace Example
{
/// <summary>
/// Main program
/// </summary>
class Program
{
/// <summary>
/// Main entry
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddEnvironmentVariables("ASPNETCORE_")
.AddJsonFile("appsettings.json", true)
.AddJsonFile($"appsettings.{ environmentName}.json", true)
.AddEnvironmentVariables()
.Build();

Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();

var services = new ServiceCollection()
.AddLogging((loggingBuilder) =>
{
loggingBuilder.AddConfiguration(configuration);
loggingBuilder.AddSerilog();

if (environmentName == EnvironmentName.Development)
{
loggingBuilder.AddDebug();
}

loggingBuilder.AddConsole();
});

//Register ConnectionStrings section
services.Configure<ConnectionStrings>(configuration.GetSection("ConnectionStrings"));
services.AddSingleton<IRedisLib, RedisLib>();

services.AddSingleton<Synchronizer>();

var serviceProvider = services.BuildServiceProvider();
serviceProvider.GetService<Synchronizer>().Sync(environmentName).Wait(Timeout.Infinite);
}
}
}

System.Data.SqlClient.TdsParser.ThrowUnsupportedCollationEncountered when connecting to SqlServer by docker image aspnet:3.1.0-alpine

· 4 min read
<span id="LC1" class="line" lang="docker"><span class="k">FROM</span><span class="s"> mcr.microsoft.com/dotnet/core/aspnet:3.1.0-<span class="idiff left right">alpine</span></span></span>
<span id="LC2" class="line" lang="docker"><span class="k">COPY</span><span class="s"> . /app</span></span>
<span id="LC3" class="line" lang="docker"><span class="k">WORKDIR</span><span class="s"> /app</span></span>
<span id="LC4" class="line" lang="docker"></span>
<span id="LC5" class="line" lang="docker"><span class="k">EXPOSE</span><span class="s"> 5000/tcp</span></span>
<span id="LC6" class="line" lang="docker"><span class="k">ENV</span><span class="s"> ASPNETCORE_URLS http://*:5000</span></span>

<span id="LC11" class="line" lang="docker"><span class="k">ENTRYPOINT</span><span class="s"> ["dotnet", "XXXX.dll"]</span></span>
System.InvalidOperationException: Internal connection fatal error.
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.DrainData(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.ThrowUnsupportedCollationEncountered(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.GetCodePage(SqlCollation collation, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.TryProcessEnvChange(Int32 tokenLength, TdsParserStateObject stateObj, SqlEnvChange& sqlEnvChange)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
<span id="LC1" class="line" lang="docker"><span class="k">FROM</span><span class="s"> mcr.microsoft.com/dotnet/core/aspnet:3.1.0<span style="color: #ff0000;">-buster-slim</span></span></span>
<span id="LC2" class="line" lang="docker"><span class="k">COPY</span><span class="s"> . /app</span></span>
<span id="LC3" class="line" lang="docker"><span class="k">WORKDIR</span><span class="s"> /app</span></span>
<span id="LC4" class="line" lang="docker"></span>
<span id="LC5" class="line" lang="docker"><span class="k">EXPOSE</span><span class="s"> 5000/tcp</span></span>
<span id="LC6" class="line" lang="docker"><span class="k">ENV</span><span class="s"> ASPNETCORE_URLS http://*:5000</span></span>
<span id="LC7" class="line" lang="docker"></span>
<span id="LC11" class="line" lang="docker"><span class="k">ENTRYPOINT</span><span class="s"> ["dotnet", "XXXX.dll"]</span></span>

also occurs in image dotnet:2.1-aspnetcore-runtime : https://github.com/dotnet/dotnet-docker/issues/560 https://github.com/dotnet/SqlClient/issues/81#issuecomment-399375323 https://github.com/dotnet/dotnet-docker/issues/684

<span id="LC1" class="line" lang="docker"><span class="k">FROM</span><span class="s"> mcr.microsoft.com/dotnet/core/aspnet:3.1.0-<span class="idiff left right">alpine</span></span></span>
<span id="LC2" class="line" lang="docker"><span class="k">COPY</span><span class="s"> . /app</span></span>
<span id="LC3" class="line" lang="docker"><span class="k">WORKDIR</span><span class="s"> /app</span></span>
<span id="LC4" class="line" lang="docker"></span>
<span id="LC5" class="line" lang="docker"><span class="k">EXPOSE</span><span class="s"> 5000/tcp</span></span>
<span id="LC6" class="line" lang="docker"><span class="k">ENV</span><span class="s"> ASPNETCORE_URLS http://*:5000</span></span>
<span id="LC7" class="line" lang="docker"></span>
<span style="color: #ff0000;"><span id="LC8" class="line" lang="docker"><span class="k">RUN </span>apk add <span class="nt">--no-cache</span> icu-libs</span>
<span id="LC9" class="line" lang="docker"><span class="k">ENV</span><span class="s"> DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false</span></span></span>
<span id="LC10" class="line" lang="docker"></span>
<span id="LC11" class="line" lang="docker"><span class="k">ENTRYPOINT</span><span class="s"> ["dotnet", "XXXX.dll"]</span></span>
ClustrMaps