public static string Replease(string originalStr, string repleasStr, string newStr)
{
int pos = originalStr.IndexOf(repleasStr);
int len = repleasStr.Length;
if (pos != -1)
{
string strLeft = originalStr.Substring(0, pos);
string strRight = originalStr.Substring(pos + len);
return strLeft + newStr + strRight;
}
else
return originalStr;
}
2009/04/02
c# 將string array轉成文字
public static string[] StringToLines(string inString)
{
string[] org = inString.Split('\n');
int count = org.Length - 1;
string[] outString = new string[count];
try
{
for (int i = 0; i < count; i++)
{
if (org[i].IndexOf('\r') == -1)
org[i] = org[i];
else
org[i] = org[i].Remove(org[i].IndexOf('\r'));
//int j = org[i].IndexOf('\r');
outString[i] = org[i];
}
}
catch
{
return null;
}
return outString;
}
{
string[] org = inString.Split('\n');
int count = org.Length - 1;
string[] outString = new string[count];
try
{
for (int i = 0; i < count; i++)
{
if (org[i].IndexOf('\r') == -1)
org[i] = org[i];
else
org[i] = org[i].Remove(org[i].IndexOf('\r'));
//int j = org[i].IndexOf('\r');
outString[i] = org[i];
}
}
catch
{
return null;
}
return outString;
}
c# 建立空的StreamReader
public static StreamReader GetEmptyStreamReader()
{
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
sw.Write("");
sw.Flush();
StreamReader sr = new StreamReader(ms);
return sr;
}
{
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
sw.Write("");
sw.Flush();
StreamReader sr = new StreamReader(ms);
return sr;
}
c# 取得檔案列表
// Dir folder
public bool FileList(string folderName)
{
try
{
DirectoryInfo dirinfo = new DirectoryInfo(folderName);
FileInfo[] sortList = dirinfo.GetFiles();
string[] dirList = new string[sortList.Length];
string[] fileName = new string[sortList.Length];
for (int i = 0; i < sortList.Length; i++)
{
dirList[i] = sortList[i].Name.ToString();
fileName[i] = sortList[i].FullName.ToString();
}
FullFileName = fileName;
FileName = dirList;
return true;
}
catch (Exception ex)
{
_errorMessage = ex.ToString();
return false;
}
}
public bool FileList(string folderName)
{
try
{
DirectoryInfo dirinfo = new DirectoryInfo(folderName);
FileInfo[] sortList = dirinfo.GetFiles();
string[] dirList = new string[sortList.Length];
string[] fileName = new string[sortList.Length];
for (int i = 0; i < sortList.Length; i++)
{
dirList[i] = sortList[i].Name.ToString();
fileName[i] = sortList[i].FullName.ToString();
}
FullFileName = fileName;
FileName = dirList;
return true;
}
catch (Exception ex)
{
_errorMessage = ex.ToString();
return false;
}
}
C# 取得文字檔中的內容
// Get file content string
public string FileContent(string fileName)
{
StreamReader stmRdr = new StreamReader(fileName);
string line = stmRdr.ReadLine();
string sLine = null;
while (line != null)
{
if (line.Length != 0)
sLine = sLine + line + '\n';
line = stmRdr.ReadLine();
}
stmRdr.Close();
return sLine;
}
public string FileContent(string fileName)
{
StreamReader stmRdr = new StreamReader(fileName);
string line = stmRdr.ReadLine();
string sLine = null;
while (line != null)
{
if (line.Length != 0)
sLine = sLine + line + '\n';
line = stmRdr.ReadLine();
}
stmRdr.Close();
return sLine;
}
c# FTP的使用 -- 修改檔名(mv)
// Reanme file or remove file
public bool FtpRename()
{
if (this.InputValidation())
{
try
{
Uri UriFtpMove = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + remotefile);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpMove);
request.Method = WebRequestMethods.Ftp.Rename;
request.RenameTo = renamefile;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
return true;
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
return false;
}
}
else
{
throw new ArgumentException(returnmsg);
}
}
public bool FtpRename()
{
if (this.InputValidation())
{
try
{
Uri UriFtpMove = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + remotefile);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpMove);
request.Method = WebRequestMethods.Ftp.Rename;
request.RenameTo = renamefile;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
return true;
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
return false;
}
}
else
{
throw new ArgumentException(returnmsg);
}
}
c# FTP的使用 -- 取得FTP Server的檔案列表(ls)
// Get file list
public string[] FtpDir()
{
string Result = "";
if (this.InputValidation())
{
try
{
Uri UriFtpDir = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + filter);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpDir);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
StreamReader MyStreamReader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
Result = MyStreamReader.ReadToEnd();
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
throw new ArgumentException(returnmsg);
}
}
else
{
throw new ArgumentException(returnmsg);
}
return Strings.StringToLines(Result);
}
public string[] FtpDir()
{
string Result = "";
if (this.InputValidation())
{
try
{
Uri UriFtpDir = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + filter);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpDir);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
StreamReader MyStreamReader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
Result = MyStreamReader.ReadToEnd();
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
throw new ArgumentException(returnmsg);
}
}
else
{
throw new ArgumentException(returnmsg);
}
return Strings.StringToLines(Result);
}
c# FTP的使用 -- 取得FTP Server的檔案(get)
// Get ftp file content
//public StreamReader FtpGet()
public bool FtpGet()
{
FileStream fileStream = null;
Stream responseStream = null;
if (this.InputValidation())
{
try
{
Uri UriFtpGet = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + remotefile);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpGet);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
responseStream = response.GetResponseStream();
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
// Write into file
if (localfile == null)
localfile = Path.GetFileName(request.RequestUri.AbsolutePath);
fileStream = File.Create(localPath + @"\" + localfile);
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
bytesRead = responseStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
}
responseStream.Close();
fileStream.Close();
return true;
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
return false;
}
}
else
{
throw new ArgumentException(returnmsg);
}
}
//public StreamReader FtpGet()
public bool FtpGet()
{
FileStream fileStream = null;
Stream responseStream = null;
if (this.InputValidation())
{
try
{
Uri UriFtpGet = new Uri("ftp://" + serverhost + ":" + serverport + dirpath + remotefile);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(UriFtpGet);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(username, password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
responseStream = response.GetResponseStream();
returnmsg = response.BannerMessage;
returncode = response.StatusCode.ToString();
// Write into file
if (localfile == null)
localfile = Path.GetFileName(request.RequestUri.AbsolutePath);
fileStream = File.Create(localPath + @"\" + localfile);
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
bytesRead = responseStream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
}
responseStream.Close();
fileStream.Close();
return true;
}
catch (Exception ex)
{
returnmsg = ex.ToString();
returncode = "0";
return false;
}
}
else
{
throw new ArgumentException(returnmsg);
}
}
2009/02/09
.Net 新手之global.asax - application 的用法 (2)
Application 的執行流程,我參考這一個網站的 sample 做一些改寫,並且標上順序...以方便我未來寫程式時的參考資料。
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(Object sender, EventArgs e) {
Application.Set("Time", System.DateTime.Now);
}
// 1.
void Application_BeginRequest(Object sender, EventArgs e)
{
Response.Write("<b>Process</b>");
Response.Write("Request is starting...<br>");
}
// 2.
void Application_AuthorizeRequest(Object sender, EventArgs e)
{
Response.Write("Authorizing request...<br>");
}
// 3.
void Application_ResolveRequestCache(Object sender, EventArgs e)
{
Response.Write("Resolving request cache...<br>");
}
// 4.
void Session_Start(Object sender, EventArgs e)
{
Response.Write("Session is starting...<br>");
}
// 5.
void Application_AcquireRequestState(Object sender, EventArgs e)
{
Response.Write("Acquiring request session state" + "...<br>");
}
// 6.
void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
Response.Write("Pre Request handler executed...<br>");
}
// 7. 已處理完後的流程
void Application_PostRequestHandlerExecute(Object sender, EventArgs e)
{
Response.Write("Post Request handler executed...<br>");
}
// 8.
void Application_ReleaseRequestState(Object sender, EventArgs e)
{
Response.Write("Releasing request state...<br>");
}
// 9.
void Application_UpdateRequestCache(Object sender, EventArgs e)
{
Response.Write("Updating request cache...<br>");
}
void Application_AuthenticateRequest(Object sender, EventArgs e)
{
Application.Set("Time", System.DateTime.Now);
}
// 10.
void Application_EndRequest(Object sender, EventArgs e)
{
Response.Write("Request is ending...<br>");
}
// 11.
void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
Response.Write("Receiving request headers...<br>");
}
// 12.
void Application_PreSendRequestContent(Object sender, EventArgs e)
{
Response.Write("Receiving request content...<br>");
}
// Exception
void Application_Error(Object sender, EventArgs e)
{
Response.Write( " is authenticating request...<br>");
}
</script>
<script runat="server">
void Application_Start(Object sender, EventArgs e) {
Application.Set("Time", System.DateTime.Now);
}
// 1.
void Application_BeginRequest(Object sender, EventArgs e)
{
Response.Write("<b>Process</b>");
Response.Write("Request is starting...<br>");
}
// 2.
void Application_AuthorizeRequest(Object sender, EventArgs e)
{
Response.Write("Authorizing request...<br>");
}
// 3.
void Application_ResolveRequestCache(Object sender, EventArgs e)
{
Response.Write("Resolving request cache...<br>");
}
// 4.
void Session_Start(Object sender, EventArgs e)
{
Response.Write("Session is starting...<br>");
}
// 5.
void Application_AcquireRequestState(Object sender, EventArgs e)
{
Response.Write("Acquiring request session state" + "...<br>");
}
// 6.
void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
Response.Write("Pre Request handler executed...<br>");
}
// 7. 已處理完後的流程
void Application_PostRequestHandlerExecute(Object sender, EventArgs e)
{
Response.Write("Post Request handler executed...<br>");
}
// 8.
void Application_ReleaseRequestState(Object sender, EventArgs e)
{
Response.Write("Releasing request state...<br>");
}
// 9.
void Application_UpdateRequestCache(Object sender, EventArgs e)
{
Response.Write("Updating request cache...<br>");
}
void Application_AuthenticateRequest(Object sender, EventArgs e)
{
Application.Set("Time", System.DateTime.Now);
}
// 10.
void Application_EndRequest(Object sender, EventArgs e)
{
Response.Write("Request is ending...<br>");
}
// 11.
void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
Response.Write("Receiving request headers...<br>");
}
// 12.
void Application_PreSendRequestContent(Object sender, EventArgs e)
{
Response.Write("Receiving request content...<br>");
}
// Exception
void Application_Error(Object sender, EventArgs e)
{
Response.Write( " is authenticating request...<br>");
}
</script>
標籤:
.net,
C#,
global.asax
2009/02/06
.Net 新手之global.asax - application 的用法 (1)
今天 .Net 新手看到了gloabl.asax 的用法,試了幾次後,上來寫寫筆記,感覺上 global.asax 這一個檔案集合了 Web Application 中的所有共用事件,我依網路上提供的範例做了練習,並稍微改寫一下下:
在 Application_Error 裡頭,也可以將 Error message 寫入 log file 或是以 email 呈現在網頁上,以下是我在網路上所看到的範例:
而我們也可以利用 web.config file,依據錯誤的類型而導到不同的網頁,xml tag 是 <customErrors>,如下:
可以利用Application_BeginRequest,在使用瀏灠網頁時,記錄user id, current time(System.DateTime.Now) 以及 Path(Request.AppRelativeCurrentExecutionFilePath) 等等資訊,可以做為使用者的喜好分析或是檔案下載分析……
- 每一個網頁的 header 都要出現 "歡迎光臨"
- 每一個網頁的 footer 都要看到網頁出現的時間
- 當有 Error 時,網頁上要出現 "資料庫忙錄中"
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(Object sender, EventArgs e) {
}
void Application_OnBeginRequest(Object sender, EventArgs E)
{
Response.Write("歡迎光臨<br>");
}
protected void Application_OnEndRequest()
{
Response.Write("<hr>This page was served at " +DateTime.Now.ToString());
}
protected void Application_Error(Object sender, EventArgs e)
{
Response.Write("<span >");
Response.Write("資料庫忙碌中<hr></font>");
Response.Write("<font face=\"Arial\" size=\"2\">");
Server.ClearError();
}
</script>
<script runat="server">
void Application_Start(Object sender, EventArgs e) {
}
void Application_OnBeginRequest(Object sender, EventArgs E)
{
Response.Write("歡迎光臨<br>");
}
protected void Application_OnEndRequest()
{
Response.Write("<hr>This page was served at " +DateTime.Now.ToString());
}
protected void Application_Error(Object sender, EventArgs e)
{
Response.Write("<span >");
Response.Write("資料庫忙碌中<hr></font>");
Response.Write("<font face=\"Arial\" size=\"2\">");
Server.ClearError();
}
</script>
在 Application_Error 裡頭,也可以將 Error message 寫入 log file 或是以 email 呈現在網頁上,以下是我在網路上所看到的範例:
void Application_Error(object sender, EventArgs e)
{
string Message = "";
Exception ex = Server.GetLastError();
Message = "發生錯誤的網頁:{0}錯誤訊息:{1}堆疊內容:{2}";
Message = String.Format(Message, Request.Path + Environment.NewLine, ex.GetBaseException().Message + Environment.NewLine, Environment.NewLine + ex.StackTrace);
//寫入事件撿視器,方法一
System.Diagnostics.EventLog.WriteEntry("WebAppError", Message, System.Diagnostics.EventLogEntryType.Error);
//寫入文字檔,方法二
System.IO.File.AppendAllText(Server.MapPath(string.Format("Log\\{0}.txt", DateTime.Now.Ticks.ToString())), Message);
//寄出Email,方法三
//此方法請參考System.Net.Mail.MailMessage
//清除Error
Server.ClearError();
Response.Write("系統錯誤,請聯絡系統管理員!!");
}
{
string Message = "";
Exception ex = Server.GetLastError();
Message = "發生錯誤的網頁:{0}錯誤訊息:{1}堆疊內容:{2}";
Message = String.Format(Message, Request.Path + Environment.NewLine, ex.GetBaseException().Message + Environment.NewLine, Environment.NewLine + ex.StackTrace);
//寫入事件撿視器,方法一
System.Diagnostics.EventLog.WriteEntry("WebAppError", Message, System.Diagnostics.EventLogEntryType.Error);
//寫入文字檔,方法二
System.IO.File.AppendAllText(Server.MapPath(string.Format("Log\\{0}.txt", DateTime.Now.Ticks.ToString())), Message);
//寄出Email,方法三
//此方法請參考System.Net.Mail.MailMessage
//清除Error
Server.ClearError();
Response.Write("系統錯誤,請聯絡系統管理員!!");
}
而我們也可以利用 web.config file,依據錯誤的類型而導到不同的網頁,xml tag 是 <customErrors>,如下:
<customErrors defaultRedirect="GeneralError.htm" mode="on">
<error statuscode="404" redirect="FileNotFound.htm"/>
</customErrors>
<error statuscode="404" redirect="FileNotFound.htm"/>
</customErrors>
可以利用Application_BeginRequest,在使用瀏灠網頁時,記錄user id, current time(System.DateTime.Now) 以及 Path(Request.AppRelativeCurrentExecutionFilePath) 等等資訊,可以做為使用者的喜好分析或是檔案下載分析……
標籤:
.net,
C#,
global.asax
訂閱:
文章 (Atom)