顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2020-07-23

引用 Topshelf 無法進行偵錯的經驗

Topshelf 是一個可以簡化撰寫 Windows Service 的套件,引用之後,我們只要當作撰寫一般 Console 的應用程式就可以。

只是近來撰寫上遇到無法進行Debug的狀況,在Visual Studio一進行偵錯可以看到Console 程式被執行,並顯示使用Topshelf語法所帶入的相關資訊,但顯示完之後旋即關閉,亦無法進行偵錯,花了不少時間才找到原因。

2017-07-27

C#數值型別於MVC Templates的正確套用


在MVC專案中,我們為了統一特定型別於網頁上的View,往往都會使用DisplayTemplates或EditorTemplates做為預設樣版。

但在Model中使用 int、uint、short ....等等的型別,卻未套用我所做好的Template,例如:
/Shared/EditorTemplates/uint.cshtml。


2016-04-19

WCF序列化集合型別建議


於某個WCF Service傳入物件時,遇到了此錯誤:
無法序列化型別 'System.Linq.Enumerable+WhereEnumerableIterator`1[System.String]'。請考慮以 DataContractAttribute 屬性標記該型別,並以 DataMemberAttribute 屬性標記該型別要序列化的所有成員。如果該型別是集合,請考慮以 CollectionDataContractAttribute 標記該型別。如需其他支援型別,請參閱 Microsoft .NET Framework 文件。

2013-07-24

計算兩個日期之間的月數

一般想要在.net中取得兩個時間點的差距值,請愛用TimeSpan結構,包括總天數、總時數、總分鐘數、總秒數....等等都有了,但就是沒有「總月數」這一項。

感謝Google大神,很快的就找到現成的算式。

在我們只想比對到「月份」的時候,可以這麼寫:

2013-01-09

升級MVC 4專案的補完計畫

前篇文章中,我們已成功的將MVC 3專案升級至MVC 4。

然而,如果希望真的更接近書上,或其他網站上所示範的MVC 4專案配置,需要額外的一些動作。對於正常執行而言,這些動作並非絕對必要,但為了享受新版的功能,並且與大多數的教學範例對照,建議多花些工夫,我相信這是值得的。;)

2013-01-08

手動升級MVC 3專案至MVC 4

自從看了保哥的 ASP.NET MVC 4 開發實戰後,就躍躍欲試,把手邊的MVC 3專案升級成MVC 4試看看,順手將步驟及碰到的問題記錄下來。

2013-01-03

專案建置錯誤「在憑證存放區中找不到資訊清單簽署憑證」

在新的開發用電腦上,欲建置某WCF Client的專案時,發生了以下錯誤:
在憑證存放區中找不到資訊清單簽署憑證
(Unable to find manifest signing certificate in the certificate store.)

使用Regular Expression過濾檔名

以往想要從一堆檔案清單中過濾特定規則的檔名,比較直覺的想法,可能是這樣:
  • 檔名大小寫問題
    要做不分大小寫的比對,或是統一轉大寫或小寫...
    Sring.ToUpper()/ToLower()/Compare()
  • 以特定字串起始、結束、或包含該字串
    可能會用到String.StartsWith()/EndsWith()/Contains()...
  • 以特定符號分隔
    如:底線。
    可能會用到String.Split()
  • 必須包含數字
    如:版本號。
    取檔名的第n位到第m位,並TryParse為Integer...

2012-12-13

ArrayList轉Array的簡單解法


將ArrayList轉成陣列(Array)的簡單解法,以string型別為例:


//
string[] strArray = (string[])MyArrayList.ToArray(typeof(string));
//


2012-12-12

用.Net寫COM元件的經驗談(二)背景知識篇

在.net開發COM元件的時候,必須對相關的背景知識加以了解,否則就會不明究理地遇上部署、註冊等等的問題,以下是我在摸索過程中常見的keyword及參考資源,適切的使用這些keyword,對於後續在搜尋時,可以得到較符合預期的結果。

【Managed Code】
代表受到 CLR (Common Languages Runtime) 的管理,泛指基於 .net framework 平台所開發的程式。

2012-12-07

取得網域名稱的方式

有時候程式會需要取得本機電腦所處的網域名稱(Domain Name),
最方便的取得方式是:

//常見網域取得用法
string domainName = System.Environment.UserDomainName;


2012-10-16

用.Net寫COM元件的經驗談

有個舊平台的應用程式引用第三方DLL元件,不知何故,該元件有時會無法下載檔案,導致程式無法執行後續流程,因為該DLL的功能僅僅是為了下載檔案使用,這對 .Net 來說是輕而易舉,因此決定換掉該 DLL,使用 .Net 撰寫的DLL取代。

2012-10-09

C# 除法運算隱含的小數位數問題

在.net中,我們很直覺得會把除法運算這麼寫出來:
decimal result=1/2; 
// result=0
在此例中,結果卻會是「0」,而不是我們預期的「0.5」。
這是因為「除數」與「被除數」都是 int 型態,所以預設的運算會回傳整數型態的商數(integer quotient)。

2011-04-28

使用HttpWebRequest時取得網站回應的錯誤內容

當我們使用HttpWebRequest物件,對某個網站發出Request的時候,在沒有錯誤的情況下(通常http status code是200),我們很容易取得網站回應的內容,簡單的幾行就行了:
HttpWebRequest request = 
  (HttpWebRequest)HttpWebRequest.Create("http://YOUR_URL/");

HttpWebResponse response = 
  (HttpWebResponse)request.GetResponse();
Stream stream = 
  response.GetResponseStream();
StreamReader sr = 
  new StreamReader(stream);
string result = sr.ReadToEnd();


但如果我們因為參數或網址錯誤,導致網站回應錯誤,就會取得如 400 Bad Request、404 Not Found...等等的這種http status,在瀏覽器上就會看到像這樣的畫面:

引用 Topshelf 無法進行偵錯的經驗

Topshelf  是一個可以簡化撰寫 Windows Service 的套件,引用之後,我們只要當作撰寫一般 Console 的應用程式就可以。 只是近來撰寫上遇到無法進行Debug的狀況,在Visual Studio一進行偵錯可以看到Console 程式被執行,並顯示...