星期六, 12月 31, 2022

[HiNet] 轉址服務

公司有網域不使用,但之前已經有撒出去文宣品上有 QRCode 和該網域網址,交代網路小白的我來研究如何進行轉址,基本上跟著 HiNet 官方說明就可以完成設定,一開始上網 Google 時,轉址服務這關鍵字找到的大多是跨境店商說明如何把網域掛上網站說明,紀錄一下免得未來被指派任務時又要重新來一遍

Hinet 官方 QA

官方說明 就很詳細,設定完成耐心等待就會成功,DNS 與轉址 => Q12 - Q14 為轉址相關說明,如下圖

[Hinet] 轉址服務-1


轉址服務設定

1. HiNet DNS 代管設定:要設定 Hinet 轉址主機 A 紀錄

把舊網域設定到轉址主機,一開始以為官方說明上的 IP 只是一個範例 IP,想說真正轉址主機 IP 要去哪裡取得,別懷疑係真ㄟ,另外官方說明有提到可以 socal media 的轉址設定,就也一併設定

[Hinet] 轉址服務-2


2. 轉址服務:設定轉址 (來源網址、目的網址)

設定好來源網址和目的網址後,官方說明 30 分鐘會生效,但在 DNS 內的 [轉址主機 A 紀錄] 也生效時才會運作,之前目小只注意到 30 分鐘生效,一直以為設定錯誤,怎麼都沒有進行轉址,忽略 DNS 紀錄官方說明是 6 - 24 小時內生效

[Hinet] 轉址服務-3


經過以上兩步驟就完成轉址服務設定

星期五, 12月 23, 2022

[RV] 並未將物件參考設定為物件的執行個體

寫報表時跑出來的錯誤訊息 - 並未將物件參考設定為物件的執行個體,訊息截圖如下
 
[SSRS] 並未將物件參考設定為物件的執行個體
去查發現 C# 報表路徑設定異常,副檔名 rdlc 竟然輸入了兩次,導致找不到報表,修正就會正常啦
ReportViewer.LocalReport.ReportEmbeddedResource = "修正後報表路徑"

星期日, 12月 04, 2022

[json] 序列化、反序列化

之前接 API 時,有用 Json.NET 的 JObject 直接抓目標資料,這次心血來潮老老實實的把該對應 class 建出來,反序列化一直出問題,最後還是透過 [VS] 選擇性貼上 功能把對應 class 自動建立出來,才發現腦殘的點在哪,Orz

在 LinqPad 上筆記該範例作為借鏡
void Main()
{
	MasterClass demoData = new MasterClass()
	{
		MasterProp = "MasterProp",
		InnerClass = new InnerClass() { InnerProp1 = "InnerProp1", InnerProp2 = "InnerProp2", InnerProp3 = "InnerProp3" },
		DetailMasterClass = new DetailMasterClass()
		{
			DetailMasterProp = "dmProp",
			DetailClass = new List<DetailClass>()
			{
				new DetailClass(){DetailProp1 = "dProp1" , DetailProp2 = "dProp2"},
				new DetailClass(){DetailProp1 = "dProp11" , DetailProp2 = "dProp22"},
			}
		}
	};

	// 序列化
	string jsonData = JsonConvert.SerializeObject(demoData);
	jsonData.Dump("序列化");

	// 反序列化-方法一
	JObject jsonObject = JObject.Parse(jsonData);
	string records = jsonObject[nameof(MasterClass.DetailMasterClass)][nameof(DetailClass)].ToString();
	List<DetailClass> result = JsonConvert.DeserializeObject<List<DetailClass>>(records);
	result.Dump("使用 JObject 取 DetailClass 資料");

	// 反序列化-方法二
	var descJson = JsonConvert.DeserializeObject<MasterClass>(jsonData);
	descJson.Dump("完整 json 資料");
	descJson.DetailMasterClass.DetailClass.Dump("只取 DetailClass 資料");
}

public class MasterClass
{
	public string MasterProp { get; set; }

	public InnerClass InnerClass { get; set; }

	public DetailMasterClass DetailMasterClass { get; set; }
}

public class InnerClass
{
	public string InnerProp1 { get; set; }
    
	public string InnerProp2 { get; set; }
    
	public string InnerProp3 { get; set; }
}

public class DetailMasterClass
{
	public string DetailMasterProp { get; set; }

	public List<DetailClass> DetailClass { get; set; }
}

public class DetailClass
{
	public string DetailProp1 { get; set; }
    
	public string DetailProp2 { get; set; }
}
Json Init 內格式化 json 資料,方便閱讀

[json] 序列化、反序列化-1

LinqPad 輸出的完整資料

[json] 序列化、反序列化-2