真的是太不easy了,曾经的时候在window server 2003上面搭建了一套asp+oracle的接口系统。就费了好大的劲儿,事实上那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了。OK,从昨天到今天打算把接口从測试环境部署到公网环境上去的时候就出现了各种各样的问题。这次一定得记录一下。
先来说一下这套接口系统的总体方案:
之所用选用asp是由于属于轻量级的接口系统,仅仅须要改动好了以后复制粘贴上去接口就马上生效。而不须要像java系的接口程序要用tomcat打包、上传、部署这种。那这个系统就是如今window server上启用IIS,然后建立web网页服务。然后通过ODBC连接上数据库,在web页面中訪问和连接oracle数据库。
以下就開始一步一步介绍怎样实现这个过程。
1. IIS服务的启动。
由于我们是部署ASP,所以记得把这两个相关的勾上。感觉不勾选asp.net也没啥事,可是保险起见还是都勾上吧,也不多啥的
安装完毕之后,就能够在管理工具中找到iis管理器了。
这里我在实际中由于当时IIS已经被启动了,可是预计是没有正确得被启动,我找了好久都没有找到IIS管理器,后来一怒之下又一次把IIS服务关掉然后又一次启动,勾上ASP,就ok了。非常多时候。假设你认为自己的操作有问题。或者别人已经给你弄好了可是不知道为什么有问题,就删除了又一次来弄吧。
然后我们在站点上面右键。选择加入站点
弹出来以下的界面:
这里面站点的名称随便写就好了。物理路径选择你自己建立的一个目录。类型和IP地址都不要变。保持HTTP和所有未分配,port能够随便填一个。由于我们这个server上已经有站点用了80port,所以我在实际中用了8080;主机名能够不写的,然后点击确定
这里要注意一下,IIS默认的那个网页会占用掉80port,刚同事来找我说他们的网页打开成iis7的页面了。我一看果然是把port给占用掉了。
这里我们的站点事实上已经建立好了。能够在你自己的站点的文件夹以下写一个简单的測试页面,这是我刚弄好的站点文件夹。一个简单的index.html页面
.
在本机的浏览器里面输入 127.0.0.1:8080就能够看到页面上显示了123456。说明我们的页面已经搭建好了。假设你的server能够公网訪问。直接输入你的公网IP地址加上port号,也能够看到刚建立好的页面。
到这里事实上站点已经搭建起来了。可是还有两步额外的操作在这里一并做了吧。
首先就是能显示页面的错误代码。假设不打开的话,asp出现什么错误提示我们是看不到的
打开我们上一步建立好的站点
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
双击ASP
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
点开调试属性,然后这里面 “将错误发送到浏览器”选项默认的是false。我们将其改成True
接下来的步骤是更改应用程序池启用32位应用程序,为什么要这样做我们在后面再告诉大家。
还有最后一步是这样:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
设置成具体信息以后,在你的client(包含不在server上查看。或者通过手机代码里面返回的结果)都能够正常显示出来错误信息了,调试程序必备!
2. 安装和配置数据库
我这里安装的是oracle10g的client,基本上都是默认的安装下来,好像仅仅有
安装类型,选择管理员和Oracle Net Configuration Assistant:勾选“运行典型配置”安装完毕数据库后
在開始菜单中 选择打开 Net Configuration Assistant
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
选择 本地Net服务名配置
选择加入
这里的服务名自己填就好了
选择默认的TCP就ok
这里须要注意一点:向你们的数据库管理员要一下数据库的内网IP地址以及port号;我不太确定这里填写外网地址能否够,由于我们的系统做了比較复杂的安全认证。我这里写外网地址是不ok的;然后port号也要问清楚。
这里也能够选择直接測试,只是应该是会失败的。由于使用的username和password不正确,
点击以下的更改登录。换成你的username和password,再又一次測试,应该就能连接成功
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
下一步
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
这里Net CA就配置好了。
3. 配置ODBC
这里假设你直接用系统中自带的ODBC。会出现这种情况:
你会发如今系统DSN加入中仅仅有一个SQL Server。这就是我们之前一个地方提到的,32位和64位的原因了。只是网上有解决的方法:
找到C:/Windows/SysWOW64
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
双击打开odbcad32.exe,
在选择系统DSN。选择加入,就能够找到oracle10g这个我们须要用到的驱动了
点击完毕
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在弹出的对话框中,Data Source Name我们在第2步中创建的名称,然后TNS service Name从下拉框中选择上一步建立好的那个,图中是我创建的名称。点击ok,这一步就算完毕了。
4. 调试你的ASP网页
一个典型的測试你的ASP能不能成功连到数据库的页面例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
server填写成前两个步骤里面我们起的那个名字,然后uid是你的oracle的username,pwd是password
还记得我们第1步里面有改过web的程序池支持32位么?假设没有那个步骤,你的页面应该会先有1行 1,111111,就是我们输出的内容,然后会提示一个80004005的错误
错误的原因是 : 未发现数据源名称而且未指定默认驱动程序
採用这个网页中的方法http://blog.snsgou.com/post-619.html。也就是我们在前面处理过的,把程序池改成启用32位的程序 就ok了。
假设你以为到这里就ok了,那你就又错了。改完了之后,你的asp页面会弹出另外一个错误:
依然是80004005错误。可是错误的原因是SQLAllocHandle on SQL_HANDLE_ENV失败。继续google怎样解决,找到了这个页面:
http://bbs.bccn.net/thread-192876-1-1.html
我也想起来了之前在windows server 2003上面也出现过相同的问题。当时也是搞了好多然后重新启动下就ok了,就抱着试一试的方法,相同的步骤操作了一遍。然后重新启动,一定要重新启动,就ok了
由于win server 2003和2008在这个步骤上面的设置略微有一些不一样。这里我就具体介绍一下2008的步骤吧,03的话就依照上面那个链接里面的内容来做就好了
首先找到你oracle10g安装的根文件夹位置,然后右键oracle10g这个文件夹。选择属性。然后切换到安全 选项卡
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
点击编辑
然后在弹出的窗体中点击加入
然后在 选择用户或组 这里我们要加入两个用户权限进去,这里不用我们输入。直接点击高级
进行查找
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
弹出这个页面。然后点击 马上查找
这里面就列出了当前server上的全部用户,我们找到两个用户,一个是图中已经高亮选中的IIS_IUSRS。还有一个是图里面鼠标悬停的地方 IUSR
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
点击确定之后。会给选择的用户加入对应的权限,我当时在做的时候,有一些文件没有訪问的权限。就直接忽略了就ok。
整个过程完毕了之后就回到了安全的选项页面。这个时候 点击 高级
在弹出的高级安全设置中
权限的选项卡里面 点击 更改权限
选中刚才我们加入的两个用户。IIS_IUSRS 和IUSR,然后把以下的 包含可从该对象的父项继承的权限 勾中,然后点击确定,这个时候又会进行一下相关文件和目录的权限授予的操作,相同还是有几个目录没有訪问权限,相同的忽略掉就ok了
最后一个关键步骤,重现server!
。一定要重新启动server!!
假设不出什么问题的话,就ok了。
我是用这个方案搞定的,在网上还搜到了这种解决方法。没有实践。不知道可不可行,由于我的程序搞定了,就懒得再折腾了,有兴趣的同学们能够试验一下:
到这里,我们的整个ASP页面链接数据库所有都成功了!!