當前位置:首頁 » 網頁前端 » aspnetmvc4web
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

aspnetmvc4web

發布時間: 2023-05-25 13:23:08

1. ASP.net mvc4剛入門,應該建立怎樣的學習方法

3層跟MVC不是一類東西。MVC是一種設計模鍵物式,asp.net mvc是一個mvc實現框架。

建議你先按照MS的基礎戚亮弊教程,動動手寫一個,能對MVC有個實際上的認識

音樂商店
http://www.asp.net/mvc/tutorials/mvc-music-store
以及電影資料庫
http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

有一點高族基礎了,可以看Apress 出版社的 Pro ASP.NET MVC4 Framework ,一邊看一邊動手寫,入門並不難的。

2. ASP.NET MVC4大文件下載的問題

剛碰到這個臘攔問題,下面的代碼可以直接襪猜拷貝使用。
protected void Page_Load(object sender, EventArgs e)
{
DownFile1(@"D:\常用軟體\win7.iso", "win7.iso");
}

private void DownFile1(string filePath, string fileName)
{
ResponseFile(this.Request, this.Response, fileName, filePath, 1024000);
}
// 輸出硬碟文件,提供下載
// 輸入參數 _Request: Page.Request對告局型象, _Response: Page.Response對象, _fileName: 下載文件名, _fullPath: 帶文件名下載路徑, _speed 每秒允許下載的位元組數
// 返回是否成功
public static bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed)
{
try
{
FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
BinaryReader br = new BinaryReader(myFile);
try
{
_Response.AddHeader("Accept-Ranges", "bytes");
_Response.Buffer = false;
long fileLength = myFile.Length;
long startBytes = 0;
int pack = 10240; //10K bytes
//int sleep = 200; //每秒5次 即5*10K bytes每秒
int sleep = (int)Math.Floor((double)(1000 * pack / _speed)) + 1;
if (_Request.Headers["Range"] != null)
{
_Response.StatusCode = 206;
string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' });
startBytes = Convert.ToInt64(range[1]);
}
_Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());
if (startBytes != 0)
{
_Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength));
}
_Response.AddHeader("Connection", "Keep-Alive");
_Response.ContentType = "application/octet-stream";
_Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8));
br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
int maxCount = (int)Math.Floor((double)((fileLength - startBytes) / pack)) + 1;
for (int i = 0; i < maxCount; i++)
{
if (_Response.IsClientConnected)
{
_Response.BinaryWrite(br.ReadBytes(pack));
Thread.Sleep(sleep);
}
else
{
i = maxCount;
}
}
}
catch
{
return false;
}
finally
{
br.Close();
myFile.Close();
}
}
catch
{
return false;
}
return true;
}

3. 如何把MVC4 Web應用程序發布到IIS,mvc4iis

一、安裝IIS
1.按鍵盤Win+R,在打開的運行框輸入control
2.依次點擊:「Programs」=》「Turn Windows features on or off」在打開的對話框中找到「Internet Information Services」 和「Internet Infomation Services Hostable Web Core」兩項並勾選。點開」Internet Information Services」的」+」 找到「World Wide Web Services」點擊「+」找到Application Development Features 點擊「+」找到」ASP.NET 3.5」和「ASP.NET 4.5」勾選。(如不勾選這兩項會出現莫名其妙的錯誤HTTP Error 500.19 - Internal Server Error。哪怕是你機器上本來就已經安裝了.NET4.5也不行)
HTTP Error 500.19 - Internal Server Error
3.點擊確定,等待安裝結束。IIS安裝完成

二、發布WEB應用程序
1.右鍵點擊你的WEB應用程序項目,點擊「發布」
2.新建配置文件,隨便起個名字,此處是MVC4。
「下一步」發布方法選擇」文件系統」(PS:我是發布在本機上的,如果你要發布到遠程伺服器上則根據你的需要選擇),「目標位置」選擇你網站的存放目錄,此處為「G:\WEB\MVC4」
「下一步」配置選擇「Release」 點擊「發布」,OK,你的網站文件已經生成了。

三、在IIS中添加我們的MVC4
1.打開IIS,在Sites上點右鍵,添加網站
2.在彈出的對話框中輸入Site Name,此處輸入「MVC4」選擇Application Pool,此處選擇」.NET v4.5」
3.選擇網站文件存儲路徑,此處為「G:\WEB\MVC4」
4.設置網站綁定埠,此處設置為:81(默認為80)
5.點擊OK,結束。
在瀏覽器中輸入「http://localhost:81/」即可訪問

4. ASP.NET MVC 4中如何讀取web.config中的配置

用ConfigurationManager這個類。

5. ASP.NET MVC 4框架揭秘:Controller(3)

Controller( )

雖然抽象類中定義了一個表示當前HttpResponse的屬性Response 但是當BeginExecute方法執行的時候該屬性尚未初始化 所以上面代碼中使用的Response屬性是我們自行定義的 運行該程序後會在瀏覽器中呈現出兆襪如圖 所示的輸出結果 從輸出方法的調用順序中不難看出在默認的情況下Controller是以非同步的方式執行的 (S )

圖 Controller在默認情況下的非同步執行方式

現在按照如下的方式族睜激重寫虛屬性DisableAsyncSupport 使它直接返回True以關閉對Controller非同步執行的支持

public class HomeController : Controller

{

//其他成員

protected override bool DisableAsyncSupport

{

get{return true;}

}

}

再早鬧次執行我們的程序將會得到如圖 所示的輸出結果 可以看出由於HomeController間接地實現了IAsyncController介面 Controller的執行總是以調用BeginExecute/EndExecute方法的方式來執行 但是由於DisableAsyncSupport屬性被設置為True BeginExecute方法內部會以同步的方式調用Execute/ExecuteCore方法 (S )

圖 Controller在DisableAsyncSupport

屬性為True的情況下的同步執行方式

ASP NET MVC應用編程介面中還定義了一個System Web Mvc AsyncController類型 從名稱上看 AsyncController是一個基於非同步的Controller 但是這里的非同步並不是指Controller的非同步執行 而是Action方法的非同步執行 從如下的代碼片段中可以看出 這個直接繼承自抽象類Controller的AsyncController是一個 空 類型(沒有額外定義和重寫基類的類型成員) 在上一個版本中 以XxxAsync/XxxCompleted形式定義的非同步Action方法均定義在繼承自AsyncController的Controller類型中 考慮到向後兼容性 AsyncController在新的版本中保留下來

public abstract class AsyncController : Controller

{}

只有以傳統方式(XxxAsync/XxxCompleted)定義的非同步Action方法才需要定義在AsyncController中 ASP NET MVC 提供了新的非同步Action方法定義方式 使我們可以通過一個返回類型為Task的方法來定義以非同步方式執行的Action 這樣的Action方法不需要定義在AsyncController中

返回目錄 ASP NET MVC 框架揭秘

編輯推薦

ASP NET開發培訓視頻教程

Microsoft NET框架程序設計視頻教程

Java程序性能優化 讓你的Java程序更快 更穩定

lishixin/Article/program/net/201311/16099

6. ASP.NET MVC 4框架:ASP.NET MVC上的Web應用

建立在 迷你版 ASP NET MVC上的Web應用

在正式介紹我們自己創建的 迷你版 ASP NET MVC的實現原理之前 不妨來看看建立在該框架之上的Web應用如何定義 通過Visual Studio創建一個空的ASP NET Web應用(注意不是ASP NET MVC應用)並不會引用System Web Mvc dll這個程序集 所以在接下來的程序中看到的所謂MVC的組件都是我們自行定義的

首先定義了如下一個SimpleModel類型 它表示最終需要綁定到View上的數據 為了驗證針對Controller和Action的解析機制 SimpleModel定義的兩個屬性分別表示當前請求的目標Controller和Action

public class SimpleModel

{

public string Controller { get; set; }

public string Action { get; set; }

}

與真正的ASP NET MVC應用開發一樣 我們需要定義Controller類 按照約定的命名方式(以字元 Controller 作為後綴) 我們定義了如下一個HomeController HomeController實現的抽象類型ControllerBase是我們自行定義的 以自定義的ActionResult作為返回類型的Index方法表示Controller的Action 它接受一個SimpleModel類型的對象作為參數 該Action方法返回的ActionResult是一個RawContextResult對象 顧名思義 RawContextResult就是將指定的內容進行原樣返回 在這里我們將作為參數的SimpleModel對象的Controller和Action屬性顯示出來

public class HomeController: ControllerBase

{

public ActionResult Index(SimpleModel model)

{

string content = string Format( Controller: { }<br/>Action:{ }

model Controller model Action)

return new RawContentResult(content)

}

}

ASP NET MVC根據請求地址來解析出用於處理該請求的Controller的類型和Action方法名稱 具體來說 我們預注冊一些包含Controller和Action名稱作為佔位符的(相對)地址模板 如果請求地址符合相應地址模板的模式 Controller和Action名稱就可以正確地解析出來 和ASP NET MVC應用類似 我們在Global asax中注冊了如下一個地址讓脊模板({controller}/{action}) 我們還注冊了一個用於創建Controller對象的工廠 RouteTable ControllerBuilder和DefaultControllerFactory都是我們自定義的類型

public class Global : System Web HttpApplication

{

protected void Application_Start(object sender EventArgs e)

{

RouteTable Routes Add( default

new Route{Url = {controller}/{action} })

ControllerBuilder Current SetControllerFactory(

new DefaultControllerFactory())

}

}

正如上洞滑旅面所說的 ASP NET MVC是通過一個自定義的HttpMole實現的 在這個 迷你版 ASP NET MVC框架中我納凳們也將其起名為UrlRoutingMole 在運行Web應用之前 我們需要通過配置對該自定義HttpMole進行注冊 下面是相關的配置

<configuration>

<system webServer>

<moles>

<add name= UrlRoutingMole

type= WebApp UrlRoutingMole WebApp />

</moles>

</system webServer>

</configuration>

到目前為止 所有的編程和配置工作已經完成 為了讓定義在HomeController中的Action方法Index來處理針對該Web應用的訪問請求 我們需要指定與之匹配的地址(符合定義在注冊地址模板的URL模式) 如圖 所示 由於在瀏覽器中輸入地址(//…/Home/Index)正好對應著HomeController的Action方法Index 所以對應的方法會被執行 而執行的結果就是將當前請求的目標Controller和Action的名稱顯示出來 (S )

圖 採用符合注冊的路由地址模板的地址訪問Web應用

上面演示了如何在我們自己創建的 迷你版 ASP NET MVC框架中創建一個Web應用 從中可以看到和創建一個真正的ASP NET MVC應用別無二致 接下來我們就來逐步地分析這個自定義的ASP NET MVC框架是如何建立起來的 而它也代表了真正的ASP NET MVC框架的工作原理

返回目錄 ASP NET MVC 框架揭秘

編輯推薦

ASP NET開發培訓視頻教程

Microsoft NET框架程序設計視頻教程

Java程序性能優化 讓你的Java程序更快 更穩定

Visual C++音頻/視頻技術開發與實戰

lishixin/Article/program/net/201311/16113