不想廢話,直接寫了!因?yàn)槭橇艚o自己做隨筆的,所以大神們看到別噴…
?1.必須有微信公眾帳號
?2.你也可以申請測試微訊號,連結(jié)給你http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
然後,建立mvc,你只需要點(diǎn)幾下vs就幫你搞定了。這不廢話?
接著,要創(chuàng)建一個(gè)一般處理程序,隨便起個(gè)名字,測試通過才是重點(diǎn),抓緊時(shí)間……?
/// <summary> /// 驗(yàn)證微信簽名 /// </summary> /// <returns></returns> /// * 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序 /// * 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密 /// * 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信。 private bool CheckSignature() { var token = "token"; var signature = HttpContext.Current.Request.QueryString["signature"]; var timestamp = HttpContext.Current.Request.QueryString["timestamp"]; var nonce = HttpContext.Current.Request.QueryString["nonce"]; var echostr = HttpContext.Current.Request.QueryString["echostr"]; string[] ArrTmp = { token, timestamp, nonce }; Array.Sort(ArrTmp); //字典排序 var tmpStr = string.Join("", ArrTmp); tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//加密方式 if (tmpStr.ToLower() == signature) { return true; } return false; }
這代碼相當(dāng)於跟微信公眾號中【開發(fā)】- -》【基本配置】裡面你所寫的Token 一個(gè)一對一令牌通信握手,只要互相通了,那麼你就算是搞定了!
搞定是後話,還有工作沒做完,接著寫!
怎麼配置,這是問題,哎只能用花生殼給測試先,至少要知道玩了半天是不是通的!
看下圖:左邊花生殼配置-----右邊iis網(wǎng)站發(fā)布綁定?
#看到這張圖,你也明白下一步怎麼玩了吧。本地iis配上了網(wǎng)域。這簡直屌爆了…………
?下面。我們加上程式碼。設(shè)定發(fā)送和自動回覆測試,看看能不能玩
#region 接收消息 /// <summary> /// 接收微信發(fā)送的XML消息并且解析 /// </summary> private void ReceiveXml() { var requestStream = HttpContext.Current.Request.InputStream; var requestByte = new byte[requestStream.Length]; requestStream.Read(requestByte, 0, (int)requestStream.Length); var requestStr = Encoding.UTF8.GetString(requestByte); if (!string.IsNullOrEmpty(requestStr)) { //封裝請求類 var requestDocXml = new XmlDocument(); requestDocXml.LoadXml(requestStr); var rootElement = requestDocXml.DocumentElement; if (rootElement == null) return; var wxXmlModel = new WxXmlModel { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, MsgType = rootElement.SelectSingleNode("MsgType").InnerText }; switch (wxXmlModel.MsgType) { case "text"://文本 wxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "image"://圖片 wxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "event"://事件 wxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; if (wxXmlModel.Event != "TEMPLATESENDJOBFINISH")//關(guān)注類型 { wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } break; default: break; } ResponseXML(wxXmlModel);//回復(fù)消息 } } #endregion #region 回復(fù)消息 private void ResponseXML(WxXmlModel WxXmlModel) { var QrCodeApi = new QrCodeApi(); var XML = ""; switch (WxXmlModel.MsgType) { case "text"://文本回復(fù) XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content); break; case "event": switch (WxXmlModel.Event) { case "subscribe": if (string.IsNullOrEmpty(WxXmlModel.EventKey)) { XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, "關(guān)注成功"); } else { XML = ResponseMessage.SubScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//掃描帶參數(shù)二維碼先關(guān)注后推送事件 } break; case "SCAN": XML = ResponseMessage.ScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//掃描帶參數(shù)二維碼已關(guān)注 直接推送事件 break; } break; default://默認(rèn)回復(fù) break; } HttpContext.Current.Response.Write(XML); HttpContext.Current.Response.End(); } #endregion
上面一個(gè)發(fā)送,一個(gè)接收,還是在WhApi.ashx處理程序文件裡面。我就想說清楚,呵呵!
?因?yàn)槟愀财脚_握手成功了,你肯定要發(fā)點(diǎn)東西過去試試對吧~~
下圖是一個(gè)接收方法和一個(gè)自動匹配回復(fù)文件的關(guān)聯(lián),別急下面我會上傳這個(gè)文件!
?還缺一個(gè)配置,就是vs要設(shè)定【偵錯(cuò)】----【附加到進(jìn)程】,只要要把下面【顯示所有使用者進(jìn)程】一項(xiàng)打勾,你就能找到w3wp.exe 如果有多個(gè)這樣的進(jìn)程,那你還是要確認(rèn)【用戶名】那一列,選中跟你程式池名稱一樣的就ok,點(diǎn)附加,確定附加!?
接下來。好玩了…………………………………………………………
?微信掃一掃那個(gè)測試公眾號,發(fā)一條自訂訊息,看看有什麼回復(fù),上面的繁瑣配置,可以加斷點(diǎn)調(diào)試的,不然搞那麼多也沒意義是吧,看看發(fā)送和接收跟你自己設(shè)定的吻合,那就ok了。?
就這樣…………寫完了。
以上是入門C#微信開發(fā)第一步的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

多線程和異步的區(qū)別在於,多線程同時(shí)執(zhí)行多個(gè)線程,而異步在不阻塞當(dāng)前線程的情況下執(zhí)行操作。多線程用於計(jì)算密集型任務(wù),而異步用於用戶交互操作。多線程的優(yōu)勢是提高計(jì)算性能,異步的優(yōu)勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務(wù)性質(zhì):計(jì)算密集型任務(wù)使用多線程,與外部資源交互且需要保持 UI 響應(yīng)的任務(wù)使用異步。

C#和C 的歷史與演變各有特色,未來前景也不同。 1.C 由BjarneStroustrup在1983年發(fā)明,旨在將面向?qū)ο缶幊桃隒語言,其演變歷程包括多次標(biāo)準(zhǔn)化,如C 11引入auto關(guān)鍵字和lambda表達(dá)式,C 20引入概念和協(xié)程,未來將專注於性能和系統(tǒng)級編程。 2.C#由微軟在2000年發(fā)布,結(jié)合C 和Java的優(yōu)點(diǎn),其演變注重簡潔性和生產(chǎn)力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注於開發(fā)者的生產(chǎn)力和雲(yún)計(jì)算。

將 XML 轉(zhuǎn)換為 JSON 的方法包括:使用編程語言(如 Python、Java、C#)編寫腳本或程序進(jìn)行轉(zhuǎn)換;使用在線工具(如 XML 轉(zhuǎn)換為 JSON、Gojko's XML 轉(zhuǎn)換器、XML 在線工具)粘貼或上傳 XML 數(shù)據(jù)並選擇 JSON 格式輸出;使用 XML 到 JSON 轉(zhuǎn)換器(如 Oxygen XML Editor、Stylus Studio、Altova XMLSpy)執(zhí)行轉(zhuǎn)換任務(wù);使用 XSLT 樣式表將 XML 轉(zhuǎn)換為 JSON;使用數(shù)據(jù)集成工具(如 Informatic

C# 多線程編程是一種讓程序同時(shí)執(zhí)行多項(xiàng)任務(wù)的技術(shù),它可以通過提升性能、提高響應(yīng)能力和實(shí)現(xiàn)並行處理來提高程序效率。雖然 Thread 類提供了直接創(chuàng)建線程的方法,但 Task 和 async/await 等高級工具可以提供更安全的異步操作和更簡潔的代碼結(jié)構(gòu)。多線程編程中常見的難題包括死鎖、競態(tài)條件和資源洩漏,需要仔細(xì)設(shè)計(jì)線程模型和使用適當(dāng)?shù)耐綑C(jī)制來避免這些問題。

如何利用.NET構(gòu)建應(yīng)用?使用.NET構(gòu)建應(yīng)用可以通過以下步驟實(shí)現(xiàn):1)了解.NET基礎(chǔ)知識,包括C#語言和跨平臺開發(fā)支持;2)學(xué)習(xí)核心概念,如.NET生態(tài)系統(tǒng)的組件和工作原理;3)掌握基本和高級用法,從簡單控制臺應(yīng)用到復(fù)雜的WebAPI和數(shù)據(jù)庫操作;4)熟悉常見錯(cuò)誤與調(diào)試技巧,如配置和數(shù)據(jù)庫連接問題;5)應(yīng)用性能優(yōu)化與最佳實(shí)踐,如異步編程和緩存。

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

.NETFramework是一個(gè)軟件框架,C#是一種編程語言。 1..NETFramework提供庫和服務(wù),支持桌面、Web和移動應(yīng)用開發(fā)。 2.C#設(shè)計(jì)用於.NETFramework,支持現(xiàn)代編程功能。 3..NETFramework通過CLR管理代碼執(zhí)行,C#代碼編譯成IL後由CLR運(yùn)行。 4.使用.NETFramework可快速開發(fā)應(yīng)用,C#提供如LINQ的高級功能。 5.常見錯(cuò)誤包括類型轉(zhuǎn)換和異步編程死鎖,調(diào)試需用VisualStudio工具。

多線程的好處在於能提升性能和資源利用率,尤其適用於處理大量數(shù)據(jù)或執(zhí)行耗時(shí)操作。它允許同時(shí)執(zhí)行多個(gè)任務(wù),提高效率。然而,線程過多會導(dǎo)致性能下降,因此需要根據(jù) CPU 核心數(shù)和任務(wù)特性謹(jǐn)慎選擇線程數(shù)。另外,多線程編程涉及死鎖和競態(tài)條件等挑戰(zhàn),需要使用同步機(jī)制解決,需要具備紮實(shí)的並發(fā)編程知識,權(quán)衡利弊並謹(jǐn)慎使用。
