ASP.NET和ASP的区别是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET和ASP的区别是啥?相关的知识,希望对你有一定的参考价值。
ASP.NET和ASP的区别是什么?
ASP.NET和ASP的区别有以下几点:
1、开发语言不同。
ASP使用non-type脚本语言来开发应用程序或web网页,在web端添加代码和在客户端添加代码一致,导致代码杂乱无章。
ASP.NET使用strongly-type编程语言开发应用程序或web网页,也可以使用.NET Framework框架开发,代码一致性较ASP好了许多。
2、运行方式不同。
ASP是解释运行的编程框架,使用js等脚本语言,运行速度慢。
ASP.NET是编译性的编程框架,运行效率高且使用的是服务器端预先编译好的代码库。
3、开发方式不同。
ASP是面向过程设计语言,代码前后端不分离,写在同一个页面,代码杂乱无章,维护性和可重用性较低。
ASP.NET则是面向对象设计语言,代码前后端分离,一部分专注于编写前端代码,一部分专注于编写相应的后台功能,代码井然有序,易维护且可重用性高。
4、复杂性不同。
ASP复杂性低,代码容易理解,但是开发效率不高。
ASP.NET则较为复杂,但是具有相应的框架,程序设计快速且思路清晰。
参考技术A 百度知道之前有人回答过这个问题的,贴出来供你参考吧:ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
1、代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
2、代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
3、弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
那么,ASP.Net有哪些改进呢?
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++ , VB , JS等等,当然,最合适的编程语言还是MS为.Net Frmaework专门推出的C(读c sharp),它可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。此外,它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
之后,微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
ASP与ASP.NET的区别:
1.开发语言不同
ASP仅局限于使用non-type脚本语言来开发,用户给WEB页中添加ASP代码的方法与客户端脚本中添加代码的方法相同,导致代码杂乱。
ASP.NET允许用户选择并使用功能完善的strongly-type编程语言,也允许使用潜加巨大的.NET Framework。
2.运行机制不同
ASP是解释运行的编程框架,所以执行效率加较低。
ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。
3.开发方式
ASP把界面设计和程序设计混在一起,维护和重用困难。
ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。
ASP.NET更好些
摘自:http://zhidao.baidu.com/question/2854823.html
-----------------------------本回答被提问者采纳 参考技术B asp和jsp的区别如下:
技术特点
ASP:
1. 使用 VBScript 、 JScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成
网站的应用程序。
2. 无须 compile 编译,容易编写,可在服务器端直接执行。
3. 使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。
4. 与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即
可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语
言 (VBScript 、 Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。
5.Active Server Pages 能与任何 ActiveX scripting 语言相容。除了可使用 VBScript或 JScript 语言来设计外,还通过 plug-in 的方式,使用由第三方所提供的其他脚本语言,譬如 REXX 、 Perl 、 Tcl 等。脚本引擎是处理脚本程序的 COM(Component Object Model) 物件。
6. 可使用服务器端的脚本来产生客户端的脚本。
7.ActiveX Server Components(ActiveX 服务器元件 ) 具有无限可扩充性。可以使用 Visual Basic 、 Java 、 Visual C++ 、 COBOL 等编程语言来编写你所需要的ActiveX Server Component 。
JSP:
1.将内容的生成和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问Java Beans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
2.强调可重用的组件
绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了
总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
3.采用标识简化页面开发
Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。
由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。
作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。 参考技术C ASP.net™即网上一直流行的ASP+™,是当前最新和最强大的ASP™规范,是Microsoft®.net的Framework(
体系结构
)中最为重要的一环。她除了保留所有
以往
ASP的优良
特性
(如
易用性
)以外,还增加了许多新的特性。以下,让我们先来看一下,.net开发组
定义
的ASP.net具有的优良特性。
Enhanced
Performance(增强的性能):ASP.net是在
服务器端
运行的通用语言运行环境。和以往的解释运行不同,ASP.net会通过即时编译来提高性能。除此之外,ASP.net使用了提前绑定,
JIT编译
,本地优化,缓存(Cache)等一系列技术来达到提高应用运行效能的
目的
。
World-class
Tool
Support(强大的
开发工具
支持):虽然和以往的ASP一样,只要
服务器操作系统
和
服务器软件
(.net要求至少Windows
2000
Server®和IIS
5.0)支持,就可以
运行脚本
,开发ASP.net的
页面
或者应用程序也不一定需要专门的开发工具。但是如果你想要快速,高效的创建
商务
的应用,你就必须掌握至少一种开发工具。ASP.net和Visual
Studio.net等良好的集成
在一起
,可以通过专门的窗口和工具箱来进行高效的
所见即所得
的开发。
Power
and
Flexibility(功能强大,并且具有很好的适应性):ASP.net是基于通用语言的运行环境,
网络应用
的
开发者
都能从其良好的适应性中得到
好处
。所有的一般语言所具有的
类库
,消息和数据连接都能方便的无缝的连接到网络上。ASP.net同时也是语言无关性的,所以可以选择你所需要的开发语言。另外通用语言的运行环境也可以保证你的
COM组件
开发的投资。
Simplicity(易于使用):ASP.net使常用的网络开发变得相当的方便,从简单的提交
表单
和
客户端
验证的制作到设置和发布整个网站,你都可以轻松完成。
Manageability(可管理性):ASP.net的管理基于“无本地管理”的思想,使用纯文本的设置方式,你只要设置相应的文本文件就可以完成一系列的站点设置。另外,如果你需要发布
你的网站
,你不必在
服务器
上使用一些特殊的
软件
进行设置,只要你简单的将制作好的文件复制到服务器上即可。
Scalability
and
Availability(可恢复性和有效性):ASP.net在设计时遵循了可扩展性的思想,她对
多进程
环境下的应用进行了优化。进程可以动态的被ASP.net调用和跟踪。如果一个进程失败,其他的进程还可以照常运行,从而保证你的应用程序不中断。
Customizability
and
Extensibility(定制和可扩展性):ASP.net提供了高可定制和重用的体系结构,你可以在一定的
层次
上修改ASP.net提供的
程序段
,你甚至可以重新编写ASP.net的组件,从而实现根据不同需要定制的目的。
Security(安全性):通过Windows®请求验证和应用程序的验证,可以保证你的应用程序是安全的。
了解了ASP.net的优良性能以后,再来看一下ASP.net基于的
语言环境
,这样你就可以知道学习ASP.net还需要掌握哪些语言基本功了。
ASP.net主要默认基于三种语言:即C#,Visual
Basic和JScript。其中Visual
Basic的
基础语法
部分和前面老版本的ASP采用的VBScript基本相似。JScript也是读者早已熟悉的了,只有C#(读作:
C
Sharp)是较为新的语言,是微软为了满足网络分布运算的需要专门开发的一门OOP语言,基本的
语义
和C语言相似,但也有许多不同,如果读者对此感兴趣可以查阅msdn.Microsoft.com/net网站,里面有C#的相关信息。虽然,C#对于一些
语法
的基本定义如For循环等等和C语言相同,但C#和C毕竟是两种语言,希望读者可以
区别
。
以下是一个简单的C#的语言
例子
:
using
System;
namespace
MySpace
public
class
Foo
:
Bar
int
x;
public
Foo()
x
=
4;
public
void
Add(int
x)
this.x
+=
x;
public
int
GetNum()
return
x;
当然,除了以上的
语言以外
,你还可以通过增加相应的
语言包
来解决其他语言使用ASP.net的问题。
根据Microsoft®的介绍,学习ASP.net可以从以下几个
方面
进行:
ASP.NET
Web
Forms(网络表单)
ASP.NET
Web
Services(网络服务)
ASP.NET
Web
Applications(网络应用)
Cache
Services(缓存)
Configuration(设置)
Deployment(发布)
Security(安全)
Localization(本地化)
Tracing(跟踪)
Debugging(调试)
以下,我们将对前三个方面进行简单的介绍。
ASP.net的表单
模型
用来根据特定的信息生成动态的页面。为了达到易于开发的目的,ASP.net针对已往的表单模型进行修改和扩充,提出一些新的技术和思想。
为了提高
代码
的可重用性,将ASP.net的代码和页面的一般脚本分割开来,这些分割成块的代码可以向组件一样被重复使用,从而提高了开发的效率。
开发者可以使用更为清晰的程序结构书写程序,不必再为看不懂
以前
书写的代码而造成的维护困难而担心了。
提供所见即所得的方式
开发网络应用
的可能性,相对于以前的ASP,ASP.net更适合于可发出所见即所得的产品,从而方便的创建网络应用。
ASP.net提供的网络服务是针对日益增长的网络计算要求提出的。和现在的一般页面不同,今后的网络页面可能会通过特殊的程序和相关的设备,应用程序等通讯。根据ASP.net的设计原则,使用Visual
Studio开发的人员,只要从网络上下载相应的页面程序到客户端,就可以通过编译或者直接在某个应用程序当中使用了。当前计算机上的设备,如果可以和HTTP,XML,SOAP,SDL等协议兼容,也就可以方便的被网络应用所调用了。
ASP.net提供的网络应用则更进一层,只要你将ASP.net程序放置到服务器主机上,那你就可以控制服务器调用和运行这些应用程序,而且不同的应用程序可以通过分割内存运行和沙箱运行的方式保证其安全性。这个特性又向网络分布式运算迈进了一步。
ASP.net提供的这三个特性是ASP.net的精华所在,当然后面的许多特性也是ASP.net区别于已往ASP或者有较大革新的地方。总之,Microsoft®开发的ASP.net是.net战略的强大武器,也是Microsoft®向网络分布式运算进军的最有力的证明。
如果读者想进一步了解ASP.net可以购买A
Preview
of
Active
Server
Pages+一书,里面较为详细的介绍了ASP.net的
基础知识
。如果,读者想要调试自己的ASP.net应用或者页面,可以到
www
.Brinkster.com申请免费的支持ASP.net的空间。 参考技术D ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
1、代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
2、代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
3、弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
那么,ASP.Net有哪些改进呢?
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++ , VB , JS等等,当然,最合适的编程语言还是MS为.Net Frmaework专门推出的C(读c sharp),它可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
ASP(Active Server Pages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。此外,它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
之后,微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
ASP与ASP.NET的区别:
1.开发语言不同
ASP仅局限于使用non-type脚本语言来开发,用户给WEB页中添加ASP代码的方法与客户端脚本中添加代码的方法相同,导致代码杂乱。
ASP.NET允许用户选择并使用功能完善的strongly-type编程语言,也允许使用潜加巨大的.NET Framework。
2.运行机制不同
ASP是解释运行的编程框架,所以执行效率加较低。
ASP.NET是编译性的编程框架,运行是服务器上的编译好的公共语言运行时库代码,可以利用早期绑定,实施编译来提高效率。
3.开发方式
ASP把界面设计和程序设计混在一起,维护和重用困难。
ASP.NET把界面设计和程序设计以不同的文件分离开,复用性和维护性得到了提高。
ASP.NET更好些
在 ASP.NET 中接受信用卡的最佳方式是啥? (在 ASP.NET 和 Authorize.NET 之间)
【中文标题】在 ASP.NET 中接受信用卡的最佳方式是啥? (在 ASP.NET 和 Authorize.NET 之间)【英文标题】:What is the best way to accept a credit card in ASP.NET? (Between ASP.NET and Authorize.NET)在 ASP.NET 中接受信用卡的最佳方式是什么? (在 ASP.NET 和 Authorize.NET 之间) 【发布时间】:2011-04-01 07:18:51 【问题描述】:我是创建商务网站的新手,现在我需要通过互联网销售软件,我不知道从哪里开始。
我正在使用 ASP.NET,并且正在考虑使用 Authorize.NET 来验证和处理信用卡。
我正在寻找可以安装在单台服务器上的稳定、值得信赖的解决方案。我的第二个目标(除了在线销售产品)是熟悉流行的购物车软件,并被大型企业使用。也许我应该从 MS Commerce 服务器开始?
【问题讨论】:
与 Authorize.Net 集成非常简单。 【参考方案1】:这里有一百万个选项,但如果您正在编写代码,最简单的代码方式是使用http://sharpauthorize.com/
【讨论】:
【参考方案2】:Authorize.Net 很容易用 ASP.NET 实现
基本上你可以通过3-4种方式进行交易:
-
通过按钮(如 Paypal (http://developer.authorize.net/api/simplecheckout/))进行简单结帐
Direct Post:假设您的定制比 Simple CheckOut 多一点。创建一个直接发布到 Authorize.Net http://developer.authorize.net/api/simplecheckout/ 的结帐表单
例如:
<h1><%=ViewData["message"] %></h1>
<%using (Html.BeginSIMForm("http://YOUR_SERVER.com/home/sim",
1.99M,"YOUR_API_LOGIN","YOUR_TRANSACTION_KEY",true))%>
<%=Html.CheckoutFormInputs(true)%>
<%=Html.Hidden("order_id","1234") %>
<input type = "submit" value = "Pay" />
<%%>
-
SIM(服务器集成)
AIM(高级集成方法):提供完全控制和自定义。
CIM(使用tokanization 将客户卡号和信息存储在Auth.NET 服务器上)
*下面是一个 CIM 函数进行交易的示例,AIM 与 CIM 非常相似,唯一的区别是tokanization *
using ProjName.AuthApiSoap; // USE AUth Webserice Reference
public Tuple<string, string, string> CreateTransaction(long profile_id, long payment_profile_id, decimal amt, string DDD)
CustomerProfileWS.ProfileTransAuthCaptureType auth_capture = new CustomerProfileWS.ProfileTransAuthCaptureType();
auth_capture.customerProfileId = profile_id;
auth_capture.customerPaymentProfileId = payment_profile_id;
auth_capture.amount = amt;//1.00m;
auth_capture.order = new CustomerProfileWS.OrderExType();
POSLib.POSManager objManager = new POSLib.POSManager();
auth_capture.order.invoiceNumber = objManager.GetTimestamp(DateTime.Now);
DateTime now = DateTime.Now;
auth_capture.order.description = "Service " + DDD;
CustomerProfileWS.ProfileTransactionType trans = new CustomerProfileWS.ProfileTransactionType();
trans.Item = auth_capture;
CustomerProfileWS.CreateCustomerProfileTransactionResponseType response = SoapAPIUtilities.Service.CreateCustomerProfileTransaction(SoapAPIUtilities.MerchantAuthentication, trans, null);
string AuthTranMsg = "";
string AuthTranCode = "";
for (int i = 0; i < response.messages.Length; i++)
AuthTranMsg = response.messages[i].text; // To Get Message n for loop to check the [i] is not empty
for (int i = 0; i < response.messages.Length; i++)
AuthTranCode = response.messages[i].code; // To Get Code n for loop to check the [i] is not empty
var tCompResp = new Tuple<string, string, string>(AuthTranCode, AuthTranMsg, response.directResponse);
return tCompResp;
这是拆分响应消息的方法(格式和顺序将为所有交易/响应的网络服务上的固定)
var tResp = objManager.CreateTransaction(profID, paymProfID, Convert.ToDecimal(PmtToday), DDD);
string respCCNo = "";
string RespCCType = "";
string InvoiceNo = "";
string transType = "";
string approvalCode = "";
string AmtRequested = "";
string respName = "";
string respReasonText = "";
string respMD5Hash = "";
string respEmailId = "";
string respReasonCode = "";
string respMethod = "";
string respAVSResultCode = "";
string responseCode = "";
string transactionId = "0";
if (!string.IsNullOrEmpty(tCompResp.Item3))
string[] arrRespParts = tCompResp.Item3.Replace("|", "").Split(',');
responseCode = arrRespParts[0];
respReasonCode = arrRespParts[2];
respReasonText = arrRespParts[3];
approvalCode = arrRespParts[4];
respAVSResultCode = arrRespParts[5];
transactionId = arrRespParts[6].Replace("|", "");
InvoiceNo = arrRespParts[7];
AmtRequested = arrRespParts[9];
transType = arrRespParts[10];
respMethod = arrRespParts[11];
respName = arrRespParts[13] + " " + arrRespParts[14];
respEmailId = arrRespParts[23];
respMD5Hash = arrRespParts[37];
respCCNo = arrRespParts[50];
RespCCType = arrRespParts[51];
===================================AIM 代码
public Tuple<string, string, string> ECheckCreateTransAIM(string amount, string bankRoutingNo, string bankAccNo, string bankAccType, string bankName, string bankAccName, string echeckType, bool isCustomerEmail, string customerEmail, string mechantEMail)
//CustomValidator1.ErrorMessage = "";
string AuthNetVersion = "3.1"; // Contains CCV support
WebClient webClientRequest = new WebClient();
System.Collections.Specialized.NameValueCollection InputObject = new System.Collections.Specialized.NameValueCollection(30);
System.Collections.Specialized.NameValueCollection ReturnObject = new System.Collections.Specialized.NameValueCollection(30);
byte[] ReturnBytes;
string[] ReturnValues;
string ErrorString;
InputObject.Add("x_version", AuthNetVersion);
InputObject.Add("x_delim_data", "True");
InputObject.Add("x_login", MERCHANT_NAME);
InputObject.Add("x_tran_key", TRANSACTION_KEY);
InputObject.Add("x_relay_response", "False");
//----------------------Set to False to go Live--------------------
InputObject.Add("x_test_request", "False");
//---------------------------------------------------------------------
InputObject.Add("x_delim_char", ",");
InputObject.Add("x_encap_char", "|");
if (isCustomerEmail)
InputObject.Add("x_email", customerEmail);
InputObject.Add("x_email_customer", "TRUE"); //Emails Customer
InputObject.Add("x_merchant_email", mechantEMail);
// FOR echeck
InputObject.Add("x_bank_aba_code", bankRoutingNo);
InputObject.Add("x_bank_acct_num", bankAccNo);
InputObject.Add("x_bank_acct_type", bankAccType);
InputObject.Add("x_bank_name", bankName);
InputObject.Add("x_bank_acct_name", bankAccName);
InputObject.Add("x_method", "ECHECK");
InputObject.Add("x_type", "AUTH_CAPTURE");
InputObject.Add("x_amount", string.Format("0:c2", Convert.ToDouble(amount)));
// Currency setting. Check the guide for other supported currencies
//needto change it to Actual Server URL
//Set above Testmode=off to go live
webClientRequest.BaseAddress = eCheckBaseAddress; //"https://apitest.authorize.net/soap/v1/Service.asmx"; //"https://secure.authorize.net/gateway/transact.dll";
ReturnBytes = webClientRequest.UploadValues(webClientRequest.BaseAddress, "POST", InputObject);
ReturnValues = System.Text.Encoding.ASCII.GetString(ReturnBytes).Split(",".ToCharArray());
if (ReturnValues[0].Trim(char.Parse("|")) == "1") // Succesful Transaction
//AuthNetCodeLabel.Text = ReturnValues[4].Trim(char.Parse("|")); // Returned Authorisation Code
//AuthNetTransIDLabel.Text = ReturnValues[6].Trim(char.Parse("|")); // Returned Transaction ID
var tCompResp = new Tuple<string, string, string>("I00001", ReturnValues[3].Trim(char.Parse("|")), string.Join(",", ReturnValues));
return tCompResp;
else
// Error!
ErrorString = ReturnValues[3].Trim(char.Parse("|")) + " (" + ReturnValues[2].Trim(char.Parse("|")) + ")";
if (ReturnValues[2].Trim(char.Parse("|")) == "45")
if (ErrorString.Length > 1)
ErrorString += "<br />n";
// AVS transaction decline
ErrorString += "Address Verification System (AVS) " +
"returned the following error: ";
switch (ReturnValues[5].Trim(char.Parse("|")))
case "A":
ErrorString += " the zip code entered does not match the billing address.";
break;
case "B":
ErrorString += " no information was provided for the AVS check.";
break;
case "E":
ErrorString += " a general error occurred in the AVS system.";
break;
case "G":
ErrorString += " the credit card was issued by a non-US bank.";
break;
case "N":
ErrorString += " neither the entered street address nor zip code matches the billing address.";
break;
case "P":
ErrorString += " AVS is not applicable for this transaction.";
break;
case "R":
ErrorString += " please retry the transaction; the AVS system was unavailable or timed out.";
break;
case "S":
ErrorString += " the AVS service is not supported by your credit card issuer.";
break;
case "U":
ErrorString += " address information is unavailable for the credit card.";
break;
case "W":
ErrorString += " the 9 digit zip code matches, but the street address does not.";
break;
case "Z":
ErrorString += " the zip code matches, but the address does not.";
break;
var tCompRespFail = new Tuple<string, string, string>(ReturnValues[6].ToString(), ErrorString, string.Join(",", ReturnValues));
return tCompRespFail;
CIM 代码(Tokanisation(无卡方法)
public Tuple<string, string, string> CreateTransaction(long profile_id, long payment_profile_id, decimal amt, string DDD)
CustomerProfileWS.ProfileTransAuthCaptureType auth_capture = new CustomerProfileWS.ProfileTransAuthCaptureType();
auth_capture.customerProfileId = profile_id;
auth_capture.customerPaymentProfileId = payment_profile_id;
auth_capture.amount = amt;//1.00m;
auth_capture.order = new CustomerProfileWS.OrderExType();
POSLib.POSManager objManager = new POSLib.POSManager();
auth_capture.order.invoiceNumber = objManager.GetTimestamp(DateTime.Now);
DateTime now = DateTime.Now;
auth_capture.order.description = "Service " + DDD;
CustomerProfileWS.ProfileTransactionType trans = new CustomerProfileWS.ProfileTransactionType();
trans.Item = auth_capture;
CustomerProfileWS.CreateCustomerProfileTransactionResponseType response = SoapAPIUtilities.Service.CreateCustomerProfileTransaction(SoapAPIUtilities.MerchantAuthentication, trans, null);
string AuthTranMsg = "";
string AuthTranCode = "";
for (int i = 0; i < response.messages.Length; i++)
AuthTranMsg = response.messages[i].text; // To Get Message n for loop to check the [i] is not empty
for (int i = 0; i < response.messages.Length; i++)
AuthTranCode = response.messages[i].code; // To Get Code n for loop to check the [i] is not empty
var tCompResp = new Tuple<string, string, string>(AuthTranCode, AuthTranMsg, response.directResponse);
return tCompResp;
【讨论】:
以上是关于ASP.NET和ASP的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章