2018年6月17日 星期日
從頭開始,一步一步架起低成本網站【第1章~Ubuntu上架設.net平台web主機】
首先不管是要自架主機或是買VPS,總之要先有一台Linux主機
我是預計寫C#建立站台,所以採用Linux + Mono + Apache2 + Mariadb這個幾乎零成本的建置環境,接下來的案例都會以mail.example.com這個主機名稱為例子
2017年10月10日 星期二
mono在.net4.0中checkboxlist狀態無法正常呈現的解決方式
如果有使用checkboxlist在mono中會發現一是裡面的值無法正常儲存,可參考以下解法:
解法1:
在web.config中的<system.web>區塊中加上此行
<pages controlRenderingCompatibilityVersion="3.5" />
註.但有可能影響到其他有用到4.0以上的元件呈現,例如:MenuItem
解法2:
在Page_PreRender中加上以下函式
protected void Page_PreRender(object sender, EventArgs e)
{
setCheckBoxStates([你的checkboxlist名稱]);
}
private void setCheckBoxStates(CheckBoxList cbl)
{
if (IsPostBack)
{
string cblFormID = cbl.ClientID.Replace("_", "$");
int i = 0;
foreach (var item in cbl.Items)
{
string itemSelected = Request.Form[cblFormID + "$" + i];
if (itemSelected != null && itemSelected != String.Empty)
((ListItem)item).Selected = true;
i++;
}
}
}
這只能保持你的選取狀態是正常的,但選取的值如果用一般寫法仍會無法儲存,所以同理改寫成以下方式
string calids = "";
string cblFormID = [你的checkboxlist名稱].ClientID.Replace("_", "$");
int i = 0;
foreach (var item in [你的checkboxlist名稱].Items)
{
string itemSelected = Request.Form[cblFormID + "$" + i];
if (itemSelected != null && itemSelected != String.Empty)
if (calids == "")
{
calids = itemSelected;
}
else
{
calids += "," + itemSelected;
}
i++;
}
註.checkboxlist的命名規則不可包含有「_」底線,不然會一樣被過濾成$導致無法正常運作
解法1:
在web.config中的<system.web>區塊中加上此行
<pages controlRenderingCompatibilityVersion="3.5" />
註.但有可能影響到其他有用到4.0以上的元件呈現,例如:MenuItem
解法2:
在Page_PreRender中加上以下函式
protected void Page_PreRender(object sender, EventArgs e)
{
setCheckBoxStates([你的checkboxlist名稱]);
}
private void setCheckBoxStates(CheckBoxList cbl)
{
if (IsPostBack)
{
string cblFormID = cbl.ClientID.Replace("_", "$");
int i = 0;
foreach (var item in cbl.Items)
{
string itemSelected = Request.Form[cblFormID + "$" + i];
if (itemSelected != null && itemSelected != String.Empty)
((ListItem)item).Selected = true;
i++;
}
}
}
這只能保持你的選取狀態是正常的,但選取的值如果用一般寫法仍會無法儲存,所以同理改寫成以下方式
string calids = "";
string cblFormID = [你的checkboxlist名稱].ClientID.Replace("_", "$");
int i = 0;
foreach (var item in [你的checkboxlist名稱].Items)
{
string itemSelected = Request.Form[cblFormID + "$" + i];
if (itemSelected != null && itemSelected != String.Empty)
if (calids == "")
{
calids = itemSelected;
}
else
{
calids += "," + itemSelected;
}
i++;
}
註.checkboxlist的命名規則不可包含有「_」底線,不然會一樣被過濾成$導致無法正常運作
2017年2月9日 星期四
在Ubuntu 建置 mod-mono-server
【建置Apache2】
1.安裝apache2
sudo apt-get update
sudo apt-get install apache2
2.指定自訂的網站位置
sudo vim /etc/apache2/apache2.conf
複製<Directory /var/www/ >的區塊將/var/www/變成你的網站路徑
【備分設定檔】
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/site-available/[你的網站名稱].conf
1.安裝apache2
sudo apt-get update
sudo apt-get install apache2
2.指定自訂的網站位置
sudo vim /etc/apache2/apache2.conf
複製<Directory /var/www/ >的區塊將/var/www/變成你的網站路徑
【備分設定檔】
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/site-available/[你的網站名稱].conf
2016年7月3日 星期日
2015年3月16日 星期一
在Ubuntu上執行.NET程式安裝Mono平台步驟
2015.06.07
安裝mono
sudo apt-get install mono-complete
sudo apt-get install mono-runtime
==================下面是舊文章僅供參考============================
一、安裝XSP
命令提示字元下,執行以下指令
1.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
2.
echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
3.
sudo apt-get install mono-devel mono-complete referenceassemblies-pcl
4
測試mono是否正常執行(hello.cs)
using System; public class HelloWorld { static public void Main () { Console.WriteLine ("Hello Mono World"); } }
編譯cs檔:
mcs hello.cs
然後測試執行:
mono hello.exe
5.測試web 是否正常執行,安裝xsp4
sudo apt-get install mono-xsp4
在你所在目錄下建立一個.aspx頁面
<%@ Page Language="C#" %> <html> <head> <title>Sample Calendar</title> </head> <asp:calendar showtitle="true" runat="server"> </asp:calendar>
執行 xsp4 --port 9000
看看 http://localhost:9000/hello.aspx 網頁是否正常執行
參考文件:
二、手動安裝mod_mono
1.
想啓用.Net 2.0版,可以加裝(選擇性,不一定要裝)
2.
3.如果想要將版本改為.Net 2.0版可以在/etc/apache2/mods-available/mod_mono.conf下修改,不然保持預設值即可
vim /etc/apache2/mods-available/mod_mono.conf
4.設定你的網站,在/etc/mono-server4目錄下副檔名是.webapp,你可以查使用man xsp查閱詳細的內容, 下面列出概要
====================================================
<apps>
<web-application>
<name>{appname}</name>
<vhost>{virtual host for application}</vhost>
<vport>{port for the application}</vport>
<vpath>{virtual directory in apache}</vpath>
<path>{physical path to aspx files}</path>
<!-- <enabled> is true by default -->
<enabled>{true|false}</enabled>
</web-application>
</apps>
5.重新啓動apache2,沒有安裝的話 sudo apt-get install apache2
6.新增一個apache2(2.4版以上)的站台設定檔/etc/apache2/sites-enabled/example.com.conf,裡面有以下內容
===========================================================
======================================================
直接用ip測試應該可以看得到index.html的內容,但index.aspx還不會正常顯示
7.設定asp.net的設定檔案
先將剛剛在apache中建立的example.com.conf中的mono註解拿掉#
再來在/etc/mono-server4中建立example.com.webapp檔,內容如下
再測試一下index.aspx應該就可以正常顯示了,vpath和vhost是虛擬目錄和主機名,視你的需要設定吧
參考文件:
ModMono〉Non-AutoHosting Instructions
Apache HTTP Server Version 2.4 VirtualHost Examples
其他資源:
各作業系統的mono下載
下一章:Mono主機上建置Restful Web Api
安裝mono
sudo apt-get install mono-complete
sudo apt-get install mono-runtime
==================下面是舊文章僅供參考============================
一、安裝XSP
命令提示字元下,執行以下指令
1.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
2.
echo "deb http://download.mono-project.com/repo/debian wheezy-apache24-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
3.
sudo apt-get install mono-devel mono-complete referenceassemblies-pcl
4
測試mono是否正常執行(hello.cs)
using System; public class HelloWorld { static public void Main () { Console.WriteLine ("Hello Mono World"); } }
編譯cs檔:
mcs hello.cs
然後測試執行:
mono hello.exe
5.測試web 是否正常執行,安裝xsp4
sudo apt-get install mono-xsp4
在你所在目錄下建立一個.aspx頁面
<%@ Page Language="C#" %> <html> <head> <title>Sample Calendar</title> </head> <asp:calendar showtitle="true" runat="server"> </asp:calendar>
執行 xsp4 --port 9000
看看 http://localhost:9000/hello.aspx 網頁是否正常執行
參考文件:
Install Mono on Linux
Mono Basics
二、手動安裝mod_mono
1.
sudo apt-get install libapache2-mod-mono
想啓用.Net 2.0版,可以加裝(選擇性,不一定要裝)
sudo apt-get install mono-apache-server2
2.
sudo a2enmod mod_mono
3.如果想要將版本改為.Net 2.0版可以在/etc/apache2/mods-available/mod_mono.conf下修改,不然保持預設值即可
vim /etc/apache2/mods-available/mod_mono.conf
4.設定你的網站,在/etc/mono-server4目錄下副檔名是.webapp,你可以查使用man xsp查閱詳細的內容, 下面列出概要
====================================================
<apps>
<web-application>
<name>{appname}</name>
<vhost>{virtual host for application}</vhost>
<vport>{port for the application}</vport>
<vpath>{virtual directory in apache}</vpath>
<path>{physical path to aspx files}</path>
<!-- <enabled> is true by default -->
<enabled>{true|false}</enabled>
</web-application>
</apps>
=======================================================
5.重新啓動apache2,沒有安裝的話 sudo apt-get install apache2
sudo /etc/init.d/apache2 restart
6.新增一個apache2(2.4版以上)的站台設定檔/etc/apache2/sites-enabled/example.com.conf,裡面有以下內容
===========================================================
<VirtualHost *:80>
# ServerName example.com
DocumentRoot /var/www/example.com/
<Directory /var/www/example.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require All granted
# Order allow,deny
# Allow from all
# SetHandler mono
DirectoryIndex index.aspx index.html
</Directory>
</VirtualHost>
======================================================
直接用ip測試應該可以看得到index.html的內容,但index.aspx還不會正常顯示
7.設定asp.net的設定檔案
先將剛剛在apache中建立的example.com.conf中的mono註解拿掉#
# SetHandler mono
再來在/etc/mono-server4中建立example.com.webapp檔,內容如下
<apps>
<web-application>
<name>example.com</name>
# <vpath>/moo</vpath>
<path>/var/www/example.com</path>
# <vhost>example.com</vhost>
</web-application>
</apps>
再測試一下index.aspx應該就可以正常顯示了,vpath和vhost是虛擬目錄和主機名,視你的需要設定吧
參考文件:
ModMono〉Non-AutoHosting Instructions
Apache HTTP Server Version 2.4 VirtualHost Examples
其他資源:
各作業系統的mono下載
下一章:Mono主機上建置Restful Web Api
2014年12月20日 星期六
[Mono Develop] 使用建立MariaDB當作asp.net Code First的資料庫(Vistual Studio Community 2013可適用)
我是用在Ubuntu下使用MonoDevelop (先前在winodw下裝mono run .net還是有點問題,查了之後在bug report上顯示尚待解決),所以你需要安裝MariaDB和Apache2和Mono和MonoDevelop,看看站內有沒有相關文件不然就Google一下。
進入主題:(Vistual Studio 2013步驟是差不多的)
1.首先在MonoDevelop下載 EntityFramework 和MySql Data Entity
2.確認Package之中是否出現元件的參考
訂閱:
文章 (Atom)
熱門文章
-
解決辦法:(沒實際試過僅供參考) 1. ASP.NET預設連結資料庫的Connection數為100個,在Connection String裡加入Max Pool Size=xxx的設定 2. 重啓SQL資料庫的服務 查詢目前DB連線數 USE mast...
-
===終端機命令列上執行=== 版本查詢:mysql --version MariaDB啟動的參數內容:mysqld --verbose --help === MY SQL 內執行=== 顯示目前MariaDB的設定值:show variables;show...
-
執行Eclipse時出現 ADB server didn't ACK 的錯誤時可以參考 Error : ADB Server Didn't ACK on Windows 另外要找哪一個PID佔用的5037(ADB的Port)有時會很長一串,如果要分...
-
修改 /etc/mysql/my.cnf sudo vim /etc/mysql/my.cnf 在[mysqld]中加上此行 ============================= [mysqld] character-set-server=utf8mb4...
-
2015.06.07 安裝mono sudo apt-get install mono-complete sudo apt-get install mono-runtime ==================下面是舊文章僅供參考================...
-
首先檢查Eclipse版本 我的版本是Kepler Service Release 2 接下來複製要更新語言包的網址 http://www.eclipse.org/babel/downloads.php 再來打開Eclipse工具...
-
先安裝Python的Mysql連線模組(請用管理員身份開啟命令字元) pip install MySQL-python 出現錯誤,必須要安裝Microsoft Vistual C++ 14.0 https://www.micros...
-
開發時,有時需要倒一下線上機的資料來測試時 線上機( Ubuntu ) : mysql -u root -p SELECT * FROM [TABLE_NAME] INTO OUTFILE "/PATH/FILE_NAME.TXT"; 本地...
-
終於找到UBUNTU 15.04開機進入COMMAND LINE 的方式了(趕緊記錄一下) sudo vim /etc/default/grub 1. 將 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 註...



