asp.net是一种使嵌入网页中的脚本可
公司主营业务:做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出五大连池免费做网站回馈大家。
由因特网服务器执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在Web服务器上动态创建它们。 指 Active Server
Pages(动态服务器页面) ,运行于 IIS(Internet Information Server
服务,是Windows开发的Web服务器)之中的程序 。
ASP .NET开发的首选语言是C#及VB .NET,同时也支持多种语言的开发
如:C#、VB .NET、 F# 、 Powershell 、Java/J#、Python、Ruby、Delphi 、JScript
1,
要在服务器安装CRRedist2008_X64.msiCRRedist2008_X64_CHS.msiCRRedist2008_x86.msiCRREdist2008_x86_chs.msi这几个文件,因为我们的服务器是Win2008,所以我选择了CRRedist2008_X64.msiCRRedist2008_X64_CHS.msi这两个文件进行安装。
这个是必须安装的,否则页面会报以下错误:
未能加载文件或程序集“CrystalDecisions.ReportAppServer.CommLayer,Version=10.2.3600.0,Culture=neutral,PublicKeyToken=692fbea5521e1304”或它的某一个依赖项。系统找不到指定的文件。
2,
文件发布的时候,web.config下要有以下几个引用:
add assembly="CrystalDecisions.Data.AdoDotNetInterop, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/
add assembly="CrystalDecisions.CrystalReports.Engine, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/
add assembly="CrystalDecisions.ReportSource, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/
add assembly="CrystalDecisions.Shared, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/
add assembly="CrystalDecisions.VSDesigner, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/
add assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/
add assembly="CrystalDecisions.Windows.Forms, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/
并且bin目录下必须有这几个引用,如果没有,把这几个文件拷贝进来(在C盘里找就可以);
3,
要把C:\ProgramFiles\CommonFiles\businessobjects\2.7\Managed下所有的文件都copy到服务器网站的bin目录下,这一步也是必要的,否则页面会报以下错误:
注意:这一步我没有在服务器中找到,所以我没有做;
未能加载文件或程序集“CrystalDecisions.Web,Version=10.2.3600.0,Culture=neutral,PublicKeyToken=692fbea5521e1304”或它的某一个依赖项。系统找不到指定的文件。
4,
如果水晶报表工具条无法显示,图片变成一个一个红叉,那我们还需要把本机C:\Inetpub\wwwroot下的aspnet_client目录copy到服务器网站根目录下。
以上功课做完了,按理说水晶报表应该可以正常运行了(
我做到这已经可以了
),但是打开页面又跳出来一个错误:
文件UNKNOWN.RPT内出错:无法将请求提交给后台处理。
在网上搜了一下,应该是因为
“出现这个错误的主要原因是水晶报表引擎没有权限生成报表。查看了一个服务器的权限设置,发现C盘的根目录Users组没有权限,只要把Users组设置为对C盘有写入的权限问题就解决了。如果认为User组对整个C盘有写入权限不安全,也可以把Temp目录设为有写入权限,问题也可以解决。
初步估计水晶报表引擎可能要在Temp目录里生成一些临时的交换文件,所以需要C盘Temp目录的操作权限。”
在 模型中 vs 已经完全脱离了编译而成为了一个彻底的ide 算是一个不小的改动 其中更是取消了有关Web Application的概念 使得习惯了vs 的人刚开始的时候会有一些摸不著头脑 下面简单说一下我在使用过程中自己总结的 算是一点经验
新建web工程并且位置是文件系统的时候 vs 只是帮你建好了一个sln文件 这个东西只是指引m *** uild 如何进行编译的 过程是 ide 调用 m *** uild m *** uild解析sln文件 m *** uild调用aspnet_piler exe进行网站的编译 所以aspnet_piler exe只是负责进行网站的编译的
预编译的概念在framework 里面就存在了 vs 中的预编译指的是将页面对应的cs/vb文件与resx文件编译后统一集成到一个dll中放到bin目录下 将aspx文件直接拷贝过去 这样做会留下隐患 因为aspx文件就直接暴露在最后的发行包中 如果完全是codeb behind模型还好 只能改改界面 如果采用了页面上的来生成页面 源代码就暴露了 针对这些问题 vs 采用了一种新的模式
请参看ASP NET 编译工具 (Aspnet_piler exe) 这篇文章了解对各种文件的处理方式
IDE发布
vs 中选择 生成 〉发布网站 在对话框中的操作将映射到aspnet_piler exe的参数中 可更新的发布对应 u 其他选项类似 请参考上面的文章了解
注意 发布时将忽略nfig中的debug?问骋簧晌薜魇孕畔⒌奈募?
手工编译
简单说来 如果是无更新发布模式编译 appcode下面的class编译成dll放在bin下 页面内容清空位置不变作占位用 同时页面被编译成一个随机名称的dll 增加一个同piled文件到bin目录下 内容大概如下
?xml version= encoding= utf ?
preserve resultType= virtualPath= /Forum/AdminList aspx hash= c filehash= f d c flags= assembly= App_Web_hmrycg w type= ASP forum_adminlist_aspx
filedeps
filedep name= /Controls/footer ascx /
filedep name= /Controls/header ascx /
filedep name= /Forum/AdminList aspx /
filedep name= /Forum/AdminList aspx cs /
filedep name= /Forum/menu ascx /
filedep name= /Forum/menu ascx cs /
/filedeps
/preserve
里面只是列出了页面上的customcontrol 这里已经完成了和masterfile的映射 这样最大限度的保护了页面的敏感信息 发布过的网站中只能看见一堆文件名了 可更新的发布模式与vs 类似 页面就直接拷贝过来不予编译了
讲了一堆原理 下面说一下aspnet_piler exe的调用方法 这是我使用的例子
我的开发目录是这样的
Project/
library/
devroot/
pubroot/
proj sln
使用的命令如下
aspnet_piler v / p \devroot f \pubroot
分析
v / 指明了iis的虚拟目录
p \devroot 表示代码实际位置
\pubroot 指明了要发布的位置
f 表示强制改写目标位置
lishixinzhi/Article/program/net/201311/13677
AspNetPager简单使用方法 AspNetPager作为分页工具,常常用于绑定数据控件,如DataGrid , Repeater等
在这里,简单讲解下 绑定 Repeater 控件的方法,其余控件绑定方法类似:
'全局变量 i 用于 读取 数据集记录的条数(注意:读取一次就够了)
Dim i As New Integer
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If i = 0 Then
con = New SqlConnection(ConfigurationManager.ConnectionStrings("NEWS_ConnectionString").ConnectionString)
con.Open()
cmd = New SqlCommand()
cmd.Connection = con
cmd.CommandText = "select count(*) from XWNRB "
'AspNetPager控件 可见
Me.AspNetPager1.Visible = True
'AspNetPager控件 每页显示大小为10条记录
Me.AspNetPager1.PageSize = 10
'AspNetPager控件 记录总的记录条数
Me.AspNetPager1.RecordCount = Convert.ToInt32(cmd.ExecuteScalar())
'AspNetPager控件 数据绑定
Me.SHOW_DATA_LIST()
i = i + 1
con.Close()
End If
End Sub
Protected Sub SHOW_DATA_LIST()
con = New SqlConnection(ConfigurationManager.ConnectionStrings("NEWS_ConnectionString").ConnectionString)
sql_Text = "select * from XWNRB where "
da = New SqlDataAdapter(sql_Text, con)
Dim ds As New Data.DataSet
'第一个参数为存储入的数据集为ds
'第二个参数为存储的起始记录序号
'第三个参数为存储的记录每页条数
'第四个参数为存储入的数据集ds中的具体某个表
da.Fill(ds, Me.AspNetPager1.PageSize * (Me.AspNetPager1.CurrentPageIndex - 1), Me.AspNetPager1.PageSize, "NEWS_LIST")
'真正绑定
Me.Repeater2.DataSource = ds.Tables("NEWS_LIST").DefaultView
Me.Repeater2.DataBind()
End Sub
'即每次点击新的页面,或者点击 Pre,Next,Last.....时候都会触发这个事件
Protected Sub AspNetPager1_PageChanged(ByVal src As Object, ByVal e As Wuqi.Webdiyer.PageChangedEventArgs) Handles AspNetPager1.PageChanged
'更新当前所在的页数序列
Me.AspNetPager1.CurrentPageIndex = e.NewPageIndex
'更新完后绑定
Me.SHOW_DATA_LIST()
End Sub