MVC

Articles

NLog的Log等級

使用等級區分有個好處,就是可以依據嚴重程度或被觸發到的機率,考慮是紀錄到DB就好還是要發送email。 首先要確定在config設定檔內rule的設定,可以參考以下: <rules> <logger name="*" minlevel="Trace" writeTo="database" /> <logger name="*" minlevel="Trace" writeTo="f"...
技術
0
minutes

NLog寄送電子郵件與紀錄事件檢視器

如標題,這個夠犀利了,主要是設定target。 電子郵件 <!-- 寄送 電子郵件 的設定 --> <target name="email" xsi:type="Mail" smtpServer="192.168.1.1" smtpPort="25" smtpAuthentication="Basic" smtpUserName="帳號" smtpPassword="密碼" enableSsl="false" from="hello@abc.com.tw" to="admin@abc.com.tw" html="true" encoding="UTF-8" addNewLines="true" subject="不好了!!!${machinename} 於 ${shortdate} ${time} 產生 ${level} 等級的錯誤。" header="##########################################################################" body="${newline} 時間:${longdate} ${newline}${newline} 等級:${level:uppercase=true} ${newline}${newline} 紀錄者:${logger} ${newline}${newline} 來源:${callsite:className=true} ${newline}${newline} Exception類:${exception:format=type} ${newline}${newline} 錯誤訊息:${message} ${newline}${newline}" footer="##########################################################################" /> newline對html而言是沒有作用的,會擠成一坨,可以在加入以下(讓config使用<br>換行) &lt;br&gt;...
技術
0
minutes

Nlog的紀錄改寫到資料庫中

承接上篇,NLog的紀錄可以改寫到資料庫中的,另外Nlog.config檔案也可以與Web.config合併喔,首先進行合併,把Nlog.config的內容除了<?xml....utf-8"?>不要複製外,把內容貼到Web.config的</configuration>之前,然後跑跑看測試,當然跑不出來囉,這是因為Web.config不認識nlog的標籤,只要在<configSections>標籤下多加入一個<section即可,如下: <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> 這樣就可以運作了,不過記得資料庫要開Table,語法如下: SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON CREATE TABLE . ( IDENTITY(1,1) NOT NULL, ...
技術
1
minute

介紹兩個好用的log套件

以往開發程式一定要處理log的問題,不然還真的不知道該怎麼去抓蟲。log有幾種常見的方式,寫檔案、寫到資料庫或是寫入事件檢視器中,其實在Visual Studio工具中,只要用NuGet就可以非常簡單的方式開始記錄log,以下文章是介紹最好用的四種Log套件,可以參考看看: https://www.codeproject.com/Articles/1278018/Best-Logging-libraries-for-ASP-NET-MVC 筆者推薦兩套,原因如下: 推薦Elmah:只要網站發生任何錯誤導致有error,就會寫log(不用在程式碼裡面特別去寫要記錄log)。IIS的error頁面要localhost端才看得到,但又不見得可以重現,所以有這個之後會方便許多。推薦NLog :紀錄log還有一種情況,例如登入登出的紀錄,這個就不適合用Elmah拉,小而巧的 NLog 與 Log4Net 就很適合,兩套都不錯且有大量粉絲,對Log都能進行分級(一般紀錄「Debug、Info、Warn」、嚴重紀錄「Error、Fatal」),也都能紀錄到資料庫中, 而推薦NLog 的原因,是因為用的人好像比較多一些。 Elmah安裝教學 用NuGet下載 Elmah.Mvc,下載完成後 https://localhost:44345/elmah 就可以看到重大錯誤的log紀錄了,但是因為是放在記憶體中,網站關掉就沒有了。在用NuGet下載 elmah.sqlserver 。修改Web.config 會發現多了一段 <add name="elmah-sqlserver" .........> 把正確的SqlServer設定上去,或是砍掉這段用既有的,但是要修改<errorLog type="Elmah.SqlErrorLog, Elmah"connectionStringName="正確連線名稱"/>執行專案下 ~App_ReadmeElmah.SqlServer.sql 建立資料表,執行完成後,目錄 ~App_Readme...
技術
2
minutes

ASP.NET MVC是透過網址的路由來定義拜訪

網址路由(Routing),全部頁面被  /App_Start/RouteConfig.cs 導向(當然可以自己定義路由), MVC的Controllers與WebApi分別是用以下兩個檔案控制: /App_Start/RouteConfig.cs /App_Start/WebApiConfig.cs 可能會有困惑,以上兩者的差異為{action},那WebApi到底要不要有Aciton比較好呢?其實JSON原理是用不同的傳輸協定去Call不同的方法,例如Get、Post、Put,沒有{action}是符合設計原理的,但是有時候這樣又不太好用,那到底要不要改掉WebApiConfig.cs呢? config.Routes.MapHttpRoute( ...
技術
0
minutes

MVC網站的AD登入驗證

登入驗證可以用資料庫帳密、AD(網域驗證),當然也可以用微軟自家的Azure AD,但是一般開發大多以前兩者為多拉,本篇文章以AD驗證為示範。 Web Form的AD驗證比較簡單,只要修改Web.config,在<connectionStrings></connectionStrings>區間加入以下資料: <add name="ADConnectionString" connectionString="LDAP://AD主機位置/DC=網域URL第一段,DC=網域URL第二段" /> 然後在<system.web></system.web>加入以下: <membership defaultProvider="AbcAD"> <providers> <add name="AbcAD" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" /> </providers> </membership> <authentication mode="Forms"> <forms loginUrl="~/Login" defaultUrl="~/Default" /> </authentication> <authorization> <deny...
技術
2
minutes