顯示具有 mono 標籤的文章。 顯示所有文章
顯示具有 mono 標籤的文章。 顯示所有文章

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的命名規則不可包含有「_」底線,不然會一樣被過濾成$導致無法正常運作


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



2016年7月3日 星期日

mono server上執行偵錯指令


追蹤mono web 發生了什麼的錯誤,可以執行以下指令,就可以在ssh中看到錯誤的記錄

sudo MONO_OPTIONS=--debug xsp4 --verbose --port 80




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 網頁是否正常執行


參考文件:

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之中是否出現元件的參考




















熱門文章