中国韩国日本在线观看免费,A级尤物一区,日韩精品一二三区无码,欧美日韩少妇色

當(dāng)前位置:主頁 > 科技論文 > 計(jì)算機(jī)論文 >

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

發(fā)布時(shí)間:2016-05-26 14:04

  本文關(guān)鍵詞:ASP.NET應(yīng)用,由筆耕文化傳播整理發(fā)布。


用VS2015中創(chuàng)建了一個(gè)非常簡單的ASP.NET5程序:

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

在Startup.cs中只輸入一行代碼:

using System; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Http; namespace HellowAspNet5 { public class Startup { public void Configure(IApplicationBuilder app) { app.Run(context => context.Response.WriteAsync()); } } }

將Target KRE version改為CoreCLR:

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

在Visual Studio中按F5能正常運(yùn)行,運(yùn)行結(jié)果如下:

Hello, ASP.NET 5 world!

然后嘗試部署到IIS中運(yùn)行,采用了2種方式:1)VS2015的Publish方式;2)手動(dòng)復(fù)制文件的方式。

一、VS2015的Publish方式

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

發(fā)布出來有2個(gè)文件夾,一個(gè)是approot文件夾,,一個(gè)是wwwroot文件夾:

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

將IIS站點(diǎn)指向wwwroot文件夾,就能正常運(yùn)行。

Hello, ASP.NET 5 world!

看一下wwwroot文件夾中的內(nèi)容:

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

神奇吧!就2個(gè)文件,一個(gè)是web.config,一個(gè)是AspNet.Loader.dll。

我寫的ASP.NET5程序跑哪去了?

打開web.config一看:

看到kre-app-base,似乎知道了,進(jìn)入approot\src\HelloAspNet5文件夾一看:

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

ASP.NET5應(yīng)用程序果然在這,但不是HelloAspNet5.dll(bin中也只有startup.prof),而是源代碼。

難道部署ASP.NET 5應(yīng)用程序要把源代碼一起部署?難道ASP.NET5在運(yùn)行時(shí)動(dòng)態(tài)編譯整個(gè)項(xiàng)目的源代碼?不解,這個(gè)問題暫且放一邊。

回過頭來看一下approot文件夾,只有2個(gè)文件夾,除了剛才看過的src文件夾,剩下就是packages文件夾:

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

不看不知道,一看嚇一跳!packages竟然有55.5M!

打開一看,哇!好多包包,數(shù)一數(shù),有64個(gè)?磥磉\(yùn)行ASP.NET5應(yīng)用程序所需要的所有東西都在這了(除了AspNet.Loader.dll)。

再仔細(xì)一看,這么多包包中最耀眼的是一個(gè)超級(jí)豪華大包——KRE-CoreCLR-amd64.1.0.0-beta1,有50M。

這也是ASP.NET 5的一個(gè)變化,將運(yùn)行環(huán)境與應(yīng)用程序打包在一起,各個(gè)應(yīng)用程序之間互不影響。

但是,運(yùn)行一個(gè)只有寫了1行代碼的程序,竟然要帶上64個(gè)包包,有點(diǎn)說不過去。

下面試試手動(dòng)部署。

二、嘗試手動(dòng)部署

根據(jù)之前版本的ASP.NET應(yīng)用程序部署經(jīng)驗(yàn),先得將Web項(xiàng)目編譯成dll。但是在VS2015中即使成功編譯Web項(xiàng)目,bin中也不會(huì)有。

后來發(fā)現(xiàn)在項(xiàng)目的Build設(shè)置中選中Produce outputs on build,可以編譯出dll:

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

編譯出來的dll在artifacts\bin中可以找到,比如這里的artifacts\bin\HelloAspNet5\Release\aspnetcore50\HelloAspNet5.dll(編譯出來有162K)。

然后在IIS中新建一個(gè)站點(diǎn),站點(diǎn)目錄中就放一個(gè)bin文件夾,其中只放一個(gè)HelloAspNet5.dll文件。

訪問時(shí)出現(xiàn)下面的錯(cuò)誤:

HTTP Error 403.14 - Forbidden

這反過來證明AspNet.Loader.dll的用途,將它也復(fù)制到bin中。再訪問,依然出錯(cuò),但錯(cuò)誤信息變了:

Couldn't determine an appropriate version of KRE to run.

參考第一種部署方式,通過web.config告訴AspNet.Loader所需要的KRE版本。于是添加web.config文件,添加如下的配置:

又出現(xiàn)新的錯(cuò)誤:

Couldn't find package 'KRE-CoreCLR-amd64.1.0.0-beta1'. Locations probed: E:\AspNet5\WebSites\packages\KRE-CoreCLR-amd64.1.0.0-beta1 E:\AspNet5\packages\KRE-CoreCLR-amd64.1.0.0-beta1 E:\packages\KRE-CoreCLR-amd64.1.0.0-beta1

找不到CoreCLR的包,從中可以看出AspNet.Loader不會(huì)在當(dāng)前Web站點(diǎn)的目錄中找,而是從上一級(jí)目錄一直找到根目錄。

這個(gè)問題好解決,建一個(gè)packages文件夾,將KRE-CoreCLR-amd64.1.0.0-beta1復(fù)制過來。

繼續(xù)出現(xiàn)新的錯(cuò)誤,而這次是讓人束手無策的錯(cuò)誤:

External component has thrown an exception. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Runtime.InteropServices.SEHException: External component has thrown an exception. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [SEHException (0x80004005): External component has thrown an exception.] System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +361 [HttpException (0x80004005): External component has thrown an exception.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +541 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +122 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +731

然后。。。就沒有然后了,昨天折騰了半天也沒解決這個(gè)問題。

然后。。。今天就寫了這篇隨筆。

然后。。。對(duì)AspNet.Loader.dll產(chǎn)生了興趣。。。

目前IIS Web站點(diǎn)中的目錄結(jié)構(gòu):

在IIS中部署ASP.NET 5應(yīng)用程序遭遇的問題

【更新】

出現(xiàn)External component has thrown an exception異常之后,bin文件夾中會(huì)出現(xiàn)profile\startup.prof文件。

這里訪問的錯(cuò)誤信息會(huì)變成:

The Main function returned unexpectedly with status code 0.


  本文關(guān)鍵詞:ASP.NET應(yīng)用,由筆耕文化傳播整理發(fā)布。



本文編號(hào):50137

資料下載
論文發(fā)表

本文鏈接:http://www.lk138.cn/kejilunwen/jisuanjikexuelunwen/50137.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶51ceb***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com