2017年3月17日 星期五

C#的Console.ReadLine的輸入長度限制

默認長度為256

將其改為1000;
Stream inputLength = Console.OpenStandardInput(1000);
Console.SetIn(new StreamReader(inputLength));
Console.ReadLine();

2017年3月16日 星期四

2017年2月21日 星期二

如何新建Global.asax

事件:
開了一個空的專案,找不到在哪裡加入Global.asax,在搜尋欄位輸入asax或Global也找不到。

解決方案:
爬文後,發現搜尋要全域應用程式類別就有了。



備註:
如果專案裡已經有Global.asax,還是會搜尋不到。

2017年1月25日 星期三

return中使用條件運算子? :

return 條件 ? true : false

如下述範例,當 a > b 時,回傳為a,當 a < = b 時,回傳為b + 1
return a > b ? a : b + 1

也可加入括弧,使其表示的更清楚
return (a > b) ? a : (b + 1)

以下引用微軟的說明文件
條件式運算子 (? :) 是一種三元運算子 (它會採用三個運算元)。 條件運算子運作方式如下:

  • 第一個運算元(條件)會隱含轉換成 bool。 接著會對它進行評估,並且完成所有副作用,再繼續執行。
  • 如果第一個運算元判斷值為 true (1),就會評估第二個運算元。
  • 如果第一個運算元判斷值為 false (0),則會評估第三個運算元。

2017年1月23日 星期一

使用HTTP Method,遇到ErrorCode10013,無法連接至遠端伺服器問題

工作內容原本是在舊的專案中加入簡單的http post功能。

結果不管用webrequest或httpwebrequest都無法連接到已經架好的網站。

一直出現以下的錯誤訊息(部份)
HResult=-2146233088
Message=傳送要求時發生錯誤。
Source=mscorlib
......
InnerException: 
     HResult=-2146233079
     Message=無法連接至遠端伺服器
     Source=System
     ......
          ErrorCode=10013
          HResult=-2147467259
          Message=嘗試存取通訊端被拒絕,因為存取權限不足。
          NativeErrorCode=100
          Source=System
          ......

也把測試網址改為Google或Yahoo,問題依舊發生了。

找了兩天類似問題的相關資料,都無法解決此問題後。

就試著開新專案寫http post的程式,看是否與電腦環境有關係。
結果測試後發現
  1. 在以前開的C# console application專案中,該程式碼可以正常執行。
  2. 而在新建立的專案中,則也出現一樣的問題。
然後靈機一動,把原本的http網址,改為https就可以執行了!

EX:網址為 http://www.google.com.tw/ 改為 https://www.google.com.tw/

最後還是不知道問題在哪裡,不過我猜測應該是因為該網站架在雲端上。

所以在不使用https的情況下,相關的http method功能就被該雲端的防火牆擋掉。

2017年1月18日 星期三

建立cmd捷徑後,直接執行指令

右鍵新增捷徑後,項目位置輸入cmd.exe。
然後右鍵點選捷徑,開啟內容。
在目標欄位加上指令。

例如:
C:\Windows\System32\cmd.exe /C dir
C:\Windows\System32\cmd.exe /K dir
C:\Windows\System32\cmd.exe /C shutdown.exe -s -t 15000
/C dir 是執行完dir命令後,關閉命令視窗。
/K dir 是執行完dir命令後,不關閉命令視窗。
/C shutdown.exe -s -t 15000 是執行排程五小時後自動關機,關閉命令視窗。 

PS:相關指令的說明,網路上都找的到,在此就不記錄了!

2017年1月17日 星期二

C# 使用ODBC呼叫Stored Procedures(SQLServer與Sybase)

下列cmdSqlStr為SQL字串,oODBCConnection為連線資料庫資料

Sybase
{call Procedure ID,'Name','Data',number}

SQLServer
{call Procedure(ID,'Name','Data',number)}

呼叫Stored Procedures
command = new OdbcCommand(cmdSqlStr, oODBCConnection);
oODBCConnection.Open();
reader = command.ExecuteReader();

2017年1月11日 星期三

C# foreach跳到下次迴圈

在符合條件的時候,程式不需繼續往下執行,直接跑下一筆資料

foreach (var i in test)
{
 if (符合條件)
  {   
    continue;
    //跳過當前循環體中的當次迴圈(i),進入(i+1),並繼續執行迴圈外的程式
    
    //break:直接跳出迴圈後,會繼續執行迴圈外的程式
    //return:直接跳出結束那個函式,不會繼續執行迴圈外的程式
  }
}