Utf8Json で日本語プロパティ?が入ってると Deserialize 時にデータが欠損する?

試したソースの commit は 7f7d6e30b65e56e250baa49f5becba64730e5227
再現するコードは書けたけど、何でプロパティ名変えただけで起きるのかは調べきれてない。。

using System;
using System.Runtime.Serialization;
using Xunit;

namespace Utf8Json.Tests
{
    public class JapaneseTest
    {
        [Fact] /* 失敗する */
        public void FailTest()
        {
            var m = new FailClass
            {
                番号 = 908,
                取引先名 = "あいうえお",
                担当者名 = "かきくけこ",
                日本語四 = "ABCDEFG",
                日本語五 = "てすと",
                日本語六 = new DateTime(2017, 10, 25, 8, 0, 0),
                日本語七 = new DateTime(2017, 10, 25, 17, 0, 0),
                日本語八 = 1
            };
            var mstr = JsonSerializer.ToJsonString(m);
            var desm = JsonSerializer.Deserialize<FailClass>(mstr);
            m.IsStructuralEqual(desm);
        }
        [Fact] /* 成功する */
        public void SuccessTest()
        {
            var m = new SuccessClass
            {
                番号 = 908,
                取引先名 = "あいうえお",
                日本語三 = "かきくけこ",
                日本語四 = "ABCDEFG",
                日本語五 = "てすと",
                日本語六 = new DateTime(2017, 10, 25, 8, 0, 0),
                日本語七 = new DateTime(2017, 10, 25, 17, 0, 0),
                日本語八 = 1
            };
            var mstr = JsonSerializer.ToJsonString(m);
            var desm = JsonSerializer.Deserialize<SuccessClass>(mstr);
            m.IsStructuralEqual(desm);
        }
    }

    [DataContract]
    public class FailClass
    {
        [DataMember]
        public int 番号 { get; set; }
        [DataMember]
        public string 取引先名 { get; set; }
        [DataMember]
        public string 担当者名 { get; set; }
        [DataMember]
        public string 日本語四 { get; set; }
        [DataMember]
        public string 日本語五 { get; set; }
        [DataMember]
        public DateTime? 日本語六 { get; set; }
        [DataMember]
        public DateTime? 日本語七 { get; set; }
        [DataMember]
        public int? 日本語八 { get; set; }
    }
    [DataContract]
    public class SuccessClass
    {
        [DataMember]
        public int 番号 { get; set; }
        [DataMember]
        public string 取引先名 { get; set; }
        [DataMember]
        public string 日本語三 { get; set; }
        [DataMember]
        public string 日本語四 { get; set; }
        [DataMember]
        public string 日本語五 { get; set; }
        [DataMember]
        public DateTime? 日本語六 { get; set; }
        [DataMember]
        public DateTime? 日本語七 { get; set; }
        [DataMember]
        public int? 日本語八 { get; set; }
    }
}

Logic App HTTP Trigger で ステータスコード が エラー でも後続処理を走らせる

Logic App で HTTP Trigger 設定したら、ステータスコード 4xx / 5xx が返ってくると後続の処理走らんのね…

調べてたらこれ見つけた。
Communicate with any endpoint over HTTP - Azure Logic Apps | Microsoft Docs
既定では、ステータスコード 300未満だと処理走らないって。

"conditions": [
  {
      "expression": "@greaterOrEquals(triggerOutputs()['statusCode'], 200)"
  }
],

これ入れといたら、200以上で後続の処理走るようになった。
まだコードからしか設定出来なさそうやけど、デザイナーで設定出来るようになったら良いねー。

色々調べたけど関係無かったやつもメモ代わりにリンク貼っとく。
Workflow triggers and actions - Azure Logic Apps | Microsoft Docs
Error and exception handling for Logic Apps in Azure | Microsoft Docs

メモ:ASP.NET Core + App Service の Application Settings

メモ

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseApplicationInsights()
                .UseStartup<Startup>()
                .Build();
Configuration.GetConnectionString("DB");

appsettings.json

{
  "ApplicationInsights": {
    "InstrumentationKey": "xxxxxxxxxxxxxxxx"
  },
  "ConnectionStrings": {
    "DB": "xxxxxxxxxxxxxxxxxxxxx"
  }
}

って書いてるときの、App Service の Application Settings は、

  • Application settings
    • ApplicationInsights__InstrumentationKey
  • Connection strings
    • DB

でOK。

Connection strings は、環境変数に prefix 付くけど 「Configuration.GetConnectionString("DB");」で問題なく取れるらしい。
Working with Azure App Services Application Settings and Connection Strings in ASP.NET Core – cjAliaga Core
タイプ違いで複数同じ名称っていけるんやっけ?その場合はどうなるんやろ。

04/17(火) SQLWorld★大阪#46 開催します

SqlWorld :: SQLWorld★大阪#46 開催します。28回目の平日夜開催で、前回同様 ハンズオン 形式行う予定です。

【日時】
2018年04月17日(火曜日) 19:00~21:00
 

【イベント概要】
SQLWorld 28回目の平日夜開催~。今回も、みんなで SQL を書いてみようというハンズオン企画です!ブラウザがあれば参加出来るようにしていますので、iPad 等のタブレットでも大丈夫です。
 

【会場】
フェンリル株式会社さま大阪本社 http://www.fenrir-inc.com/
〒530-0011 大阪府大阪市北区大深町 3番1号 グランフロント大阪タワーB(オフィス)
 

【参加費】
無料
 

【持ち物】
パソコン/タブレット (DB のインストールは不要です。)
 

【参加可能人数】
13 人
 

お題に沿って、SQL を書いてみようという勉強会です。是非ご参加を~。
今回は初心者向けの優しめの問題を考え中です。

開催回数は増えていっていますが、続き物というわけでは無いので初めて参加される方でもお気軽にどぞー。

メモ MemoryStream + ZipArchive + CodePageEncodingProvider

.NET Core で sjis 使うには、

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

が要る。

install-package System.Text.Encoding.CodePages
using System.IO;
using System.IO.Compression;
using System.Text;

// https://stackoverflow.com/questions/17232414/creating-a-zip-archive-in-memory-using-system-io-compression
class Program
{
    static void Main(string[] args)
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        using (var mem = new MemoryStream())
        {
            using (var archive = new ZipArchive(mem, ZipArchiveMode.Create, true, Encoding.GetEncoding("sjis")))
            {
                var f1 = archive.CreateEntry("てすと.csv");
                using (var entry = f1.Open())
                using (var writer = new StreamWriter(entry, Encoding.GetEncoding("sjis")))
                {
                    writer.Write("あいうえお,かきくけこ");
                }
            }

            using (var f = new FileStream(@"c:\temp\hoge.zip", FileMode.Create))
            {
                mem.Seek(0, SeekOrigin.Begin);
                mem.CopyTo(f);
            }
        }
    }
}

SQL Server の Date 型に DbType.Date 渡しても動かない問題のドキュメントが直りました

結構前にこんなの書いてたんですが、
SQL Server Data Type Mappings のドキュメント間違ってね? - お だ のスペース

github にも issue が挙がってて後方互換性のため修正しませんってなってました。
Can't set SqlParameter.DbType to Date · Issue #21279 · dotnet/corefx · GitHub

Closing this as the bug was carried over from framework, and in framework it was not fixed for back compat reasons

これのドキュメントを直してもらいました。
SQL Server Data Type Mappings | Microsoft Docs
Date and Time Data | Microsoft Docs