仓酷云
标题:
ASP.NET网站制作之.NET平台下WEB使用程序的部署的例子
[打印本页]
作者:
海妖
时间:
2015-1-16 22:48
标题:
ASP.NET网站制作之.NET平台下WEB使用程序的部署的例子
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。web|程序NET平台下WEB使用程序的部署(安装数据库和主动设置)
在.net平台下,部署Web办理计划是对照便利的。我们能够使用VisualStudio.NET2003增加一个WEB安装项目,在部署的“文件体系编纂器”中增加项目标主输入和内容文件,十分浅易地完成安装程序的制造。
可是,如许制造的安装程序,只是将web页和asp.net程序编译的dll文件安装到方针呆板的iis目次,关于一样平常的使用程序是能够的(好比用access数据库,能够一同打包到安装程序中);假如数据库是sqlSERVER,必要在部署的时分一并安装数据库,安装程序的制造就会庞大一些,必要我们自界说安装程序类。在安装程序类中实行SQL剧本并将毗连字符串写进Web.config。
l安装数据库
微软msdn上先容过在部署使用程序的时分创建数据库。如:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxwlkWalkthroughUsingCustomActionToCreateDatabaseDuringInstallation.asp
这类办法是创立一个安装程序类,在安装程序类中挪用ado.net实行sql语句(SQL语句放在一个文本文件中)来创立数据库。
可是,这类办法有一个成绩,假如用sqlServer2000天生了一切建表、视图、存储历程的一个剧本文件,用ADO.NET来实行这个剧本文件,就会由于剧本中有很多“GO”语句而呈现毛病。固然,我们能够把“GO”交换成换行符,使用ADO.NET一条条实行SQL语句。很明显,如许的效力对照低。
最好的举措是挪用osql实行剧本。(大概创立一个数据库项目标cmd文件,而cmd文件创建数据库的时分也是挪用的osql)。
起首,我们新建一个asp.netWeb使用程序
http://localhost/VbNetTest
,并翻开VbNetTest项目
创立部署项目
1.在“文件”菜单上指向“增加项目”,然后选择“新建项目”。
2.在“增加新项目”对话框中,选择“项目范例”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“Web安装项目”。在“称号”框中键进TestInstaller。
3.单击“断定”封闭对话框。
4.项目被增加到办理计划资本办理器中,而且文件体系编纂器翻开。
5.在“属性”窗口中,选择ProductName属性,并键进GCRM。
将VbNetTest项目标输入增加到部署项目中
1.在“文件体系编纂器”中,选择“Web使用程序”文件夹。在“操纵”菜单上,指向“增加”,然后选择“项目输入”。
2.在“增加项目输入组”对话框中,选择“项目”下拉列表中的“VbNetTest”。
3.单击“断定”封闭对话框。
4.从列表当选择“主输入”和“内容文件”组,然后单击“断定”。
创立安装程序类
1.在“文件”菜单上指向“新建”,然后选择“项目”。
2.在“新建项目”对话框中,选择“项目范例”窗格中的“VisualBasic项目”,然后选择“模板”窗格中的“类库”。在“称号”框中键进DBCustomAction。
3.单击“翻开”封闭对话框。
4.从“项目”菜单当选择“增加新项”。
5.在“增加新项”对话框当选择“安装程序类”。在“称号”框中键进DBCustomAction。
6.单击“断定”封闭对话框。
创立自界说安装对话框
1.在办理计划资本办理器当选择“TestInstaller”项目。在“视图”菜单上指向“编纂器”,然后选择“用户界面”。
2.在用户界面编纂器中,选择“安装”下的“启动”节点。在“操纵”菜单上,选择“增加对话框”。
3.在“增加对话框”对话框中,选择“允许协定”对话框,然后单击“断定”封闭对话框。
4.在“增加对话框”对话框中,选择“文本框(A)”对话框,然后单击“断定”封闭对话框。
5.在“操纵”菜单上,选择“上移”。反复此步骤,直到“文本框(A)”对话框位于“安装文件夹”节点之上。
6.在“属性”窗口中,选择BannerText属性并键进:安装数据库.。
7.选择BodyText属性并键进:安装程序将在方针呆板上安装数据库。
8.选择Edit1Label属性并键进:数据库称号:。
9.选择Edit1Property属性并键进CUSTOMTEXTA1。
10.选择Edit1Value属性并键进:GsCrm。
11.选择Edit2Label属性并键进:服务器名:。
12.选择Edit2Property属性并键进CUSTOMTEXTA2。
13.选择Edit2Value属性并键进:(local)。
14.选择Edit3Label属性并键进:用户名:。
15.选择Edit3Value属性并键进:sa。
16.选择Edit3Property属性并键进CUSTOMTEXTA3。
17.选择Edit4Label属性并键进:暗码:。
18.选择Edit4Property属性并键进CUSTOMTEXTA4。
19.选择Edit2Visible、Edit3Visible和Edit4Visible属性,并将它们设置为False。
创立自界说操纵
1.在办理计划资本办理器当选择“TestInstaller”项目。在“视图”菜单上指向“编纂器”,然后选择“自界说操纵”。
2.在自界说操纵编纂器当选择“安装”节点。在“操纵”菜单上,选择“增加自界说操纵”。
3.在“选择项目中的项”对话框中,双击“使用程叙文件夹”。
4.选择“主输入来自DBCustomAction(举动)”项,然后单击“断定”封闭对话框。
5.在“属性”窗口中,选择CustomActionData属性并键进/dbname=[CUSTOMTEXTA1]/server=[CUSTOMTEXTA2]/user=[CUSTOMTEXTA3]/pwd=[CUSTOMTEXTA4]/targetdir="[TARGETDIR]"。
附/targetdir="[targetdir]"是安装后的方针路径,为了在dbcustomaction类中取得安装后的路径,我们设置此参数。
别的,安装后的路径也能够经由过程Reflection失掉:
DimAsmAsSystem.Reflection.Assembly=_
System.Reflection.Assembly.GetExecutingAssembly
MsgBox("Asm.Location")
增加文件
1.将SQLServer天生的剧本文件DB.sql增加到“TestInstaller”项目
2.将安装文件LisenceFile.rtf增加到“TestInstaller”项目
3.在用户界面编纂器中,选择允许协定,设置LisenceFile属性为LisenceFile.rtf文件
将代码增加到安装程序类中,dbcustomaction.vb类
ImportsSystem.ComponentModel
importsSystem.Configuration.Install
importsSystem.IO
importsSystem.Reflection
<runinstaller(true)>PublicClassDBCustomAction
inheritsSystem.Configuration.Install.Installer
#region"组件计划器天生的代码"
publicSubNew()
mybase.new()
该挪用是组件计划器所必须的
initializecomponent()
在InitializeComponent()挪用以后增加任何初始化
endSub
Installer重写dispose以清算组件列表。
protectedOverloadsOverridesSubDispose(ByValdisposingAsBoolean)
ifdisposingThen
ifNot(componentsIsNothing)Then
components.dispose()
endIf
endIf
mybase.dispose(disposing)
endSub
privatecomponentsAsSystem.ComponentModel.IContainer
<system.diagnostics.debuggerstepthrough()>PrivateSubInitializeComponent()
endSub
#endRegion
实行sql语句
privateSubExecuteSql(ByValconnAsString,ByValDatabaseNameAsString,ByValSqlAsString)
dimmySqlConnectionAsNewSqlClient.SqlConnection(conn)
dimCommandAsNewSqlClient.SqlCommand(Sql,mySqlConnection)
command.connection.open()
command.connection.changedatabase(databasename)
try
command.executenonquery()
finally
closeConnection
command.connection.close()
endTry
endSub
publicOverridesSubInstall(ByValstateSaverAsSystem.Collections.IDictionary)
MyBase.Install(stateSaver)
------------------------创建数据库-------------------------------------------------
try
dimconnStrAsString=String.Format("datasource={0};userid={1};password={2};persistsecurityinfo=false;packetsize=4096",Me.Context.Parameters.Item("server"),Me.Context.Parameters.Item("user"),Me.Context.Parameters.Item("pwd"))
依据输出的数据库称号创建数据库
executesql(connstr,"master","CREATEDATABASE"+Me.Context.Parameters.Item("dbname"))
挪用osql实行剧本
dimsqlProcessAsNewSystem.Diagnostics.Process
sqlprocess.startinfo.filename="osql.exe"
sqlprocess.startinfo.arguments=String.Format("-U{0}-P{1}-d{2}-i{3}db.sql",Me.Context.Parameters.Item("user"),Me.Context.Parameters.Item("pwd"),Me.Context.Parameters.Item("dbname"),Me.Context.Parameters.Item("targetdir"))
sqlprocess.startinfo.windowstyle=ProcessWindowStyle.Hidden
sqlprocess.start()
sqlprocess.waitforexit()守候实行
sqlprocess.close()
删除剧本文件
dimsqlFileInfoAsNewSystem.IO.FileInfo(String.Format("{0}db.sql",Me.Context.Parameters.Item("targetdir")))
ifsqlFileInfo.ExistsThen
sqlfileinfo.delete()
endIf
catchexAsException
throwex
endTry
---------------------将毗连字符串写进Web.config-----------------------------------
try
dimFileInfoAsSystem.IO.FileInfo=NewSystem.IO.FileInfo(Me.Context.Parameters.Item("targetdir")&"web.config")
ifNotFileInfo.ExistsThen
throwNewInstallException("没有找到设置文件")
endIf
实例化xml文档
dimXmlDocumentAsNewSystem.Xml.XmlDocument
xmldocument.load(fileinfo.fullname)
查找到appsettings中的节点
dimNodeAsSystem.Xml.XmlNode
dimFoundItAsBoolean=False
forEachNodeInXmlDocument.Item("configuration").Item("appSettings")
ifNode.Name="add"Then
ifNode.Attributes.GetNamedItem("key").Value="connString"Then
写进毗连字符串
node.attributes.getnameditem("value").value=String.Format("PersistSecurityInfo=False;DataSource={0};InitialCatalog={1};UserID={2};Password={3};PacketSize=4096;Pooling=true;MaxPoolSize=100;MinPoolSize=1",_
me.context.parameters.item("server"),Me.Context.Parameters.Item("dbname"),Me.Context.Parameters.Item("user"),Me.Context.Parameters.Item("pwd"))
foundit=True
endIf
endIf
nextNode
ifNotFoundItThen
throwNewInstallException("web.Config文件没有包括connString毗连字符串设置")
endIf
xmldocument.save(fileinfo.fullname)
catchexAsException
throwex
endTry
endSub
endClass
最初编译天生!
在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。
作者:
精灵巫婆
时间:
2015-1-18 18:32
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者:
爱飞
时间:
2015-1-22 21:16
逐步缩小出错代码段的范围,最终确定错误代码的位置。
作者:
小魔女
时间:
2015-1-31 11:54
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
作者:
不帅
时间:
2015-2-6 19:17
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
作者:
再见西城
时间:
2015-2-18 09:01
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
作者:
只想知道
时间:
2015-3-6 01:41
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
作者:
仓酷云
时间:
2015-3-12 18:28
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
作者:
第二个灵魂
时间:
2015-3-20 01:32
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2