by Rain Chu | 2 月 15, 2023 | ASP.NET, 程式
當在撰寫 ASP.NET 4.0 以上 WebForm 的程式碼時候,如果要用 Request 的方法帶 XML 或是 JSON DATA,會遇到跳出「具有潛在危險 Request.Form 的值已從用戶端偵測到」的錯誤,解決方法可以在該頁面上面標註ValidateRequest=”false”
當你遇到錯誤訊息如下時候
可以到 xxx.aspx 中的 page 定義中,去修改設定成
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="home.aspx.cs" Inherits="xxx" ValidateRequest="false" %>
參考資料如下
https://learn.microsoft.com/zh-tw/aspnet/whitepapers/request-validation
by Rain Chu | 7 月 19, 2021 | C#, PHP, 程式
常常要接WEB API的人都需要在許多種語言中穿梭,其中最麻煩的就是加密的函式(Function)了,不同語言即使加密演算法都一樣,但在呈現的時候常常都是不一樣的,也會有些微的小地方要修正,但就是這些地方在捆擾著大家,浪費時間在處理顯示問題,所以今天的主題放在C#的MD5()要如何接上PHP的MD5()
一言不合就先上C#的程式碼,這一段程式碼式可以複製貼上後就可以呼叫的,你只要呼叫他就回你PHP格式的MD5字串,通常就在把她回填到WEB API的加密區域就可以用了
using System.Security.Cryptography;
public string PHPMD5(string text)
{
var md5 = new MD5CryptoServiceProvider();
byte[] bytesText = Encoding.UTF8.GetBytes(text.ToLower());
byte[] bytesMD5Text = md5.ComputeHash(bytesText);
StringBuilder sb = new StringBuilder();
foreach (var b in bytesMD5Text)
{
sb.Append(b.ToString("x2").ToLower());
}
return sb.ToString();
}
處理完MD5顯示不相容的問題後,我們來處理 http request header 的問題,現在 C# 中比較建議用 httpclient 來替代以前的WebClient,替代後最常見的問題就是要把寫法改成非同步想法 Async,以及 HttpClient 功能相對 WebClient 要來的低接一些,不太熟悉底層的程序員會找不到方法使用,我先來介紹一下,如果你要在 HttpClient 中加入 http request header 的方法,程式碼如下
using (HttpClient client = new HttpClient())
{
try
{
client.DefaultRequestHeaders.Add("account", account);
client.DefaultRequestHeaders.Add("sign", sign);
client.DefaultRequestHeaders.Add("timestamp", timestamp);
client.Timeout = TimeSpan.FromSeconds(30);
HttpResponseMessage response = await client.GetAsync(url);
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
catch (HttpRequestException ex)
{
Console.WriteLine("Message :{0} ", ex.Message);
}
}
這種寫法比較能夠勾起老人的回憶,比較像是webclient的邏輯,也比較直覺些
近期留言