WIN7下配置WebService
上次接了一个小单,做图形化的原理示教系统。合同签定后,把软件给用户,收80%的合同款。一晃一年过去了,是不是该收尾款了呢?
结果用户那边出了问题,说还要再加两个功能:FLASH调用和网络部署。
嗨,以为什么高深的要求呢,差点就一口应承下来了。幸亏这么多年的经验告诉我,在用户那里,对一件事的难易程度的判断是需要因地制宜地考虑的,尤其是不要轻易地说一件事很简单。
另外一个原因,也是事实,在过去的一年里,DrGraph脱胎换骨了,换成2010 Ribbon界面风格,在win7下开发,鸟枪换炮一样的效果。这中间的工作量,唉,说起来就一句话,做起来就一年或半载。
FLASH调用和网络部署功能在以前版本都是有的,但当时用户说不需要,所以合同中也就没提。而在改版升级的过程中,各个模块是一个个地添加进去。说来也绝了,这两个功能居然都还没有再实现。
先做哪个呢?编个小程序生成个随机数,结果是网络部署先。
那就来部署吧。以前的程序都还在哈,代码也都还在,哦,环境不在了,以前是XP+iis6,那第一步,就是配环境吧。
先生成WEBSERVICE目标应用程序,这个倒是不难,把以前的程序升级为2010版本就是了,貌似改一下char之类的东东就OK了。花了大概1个小时就搞定。
细心的朋友能看到,这是2013-12-09的事情,距离今天,整整20天了。
这20天发生了什么事?与这事无关的就不说了,反正大事小情不断,出了一句流行语:万万没想到啊,他是存钱!
确实,万万没想到啊,这个小事居然断断续续地耗了20天,比调硬件还要曲折。
其实,问题就一个,将CbwGraphWS.dll部署到服务器上,作为WebService通过IIS访问。呃,看不懂的就不要看了,下面的更看不懂。
首先,需要在WIN7下安装IIS吧。这对于象咱这种白骨精一样的Coder来说,脚趾头都会认为它没问题。怎么办呢?白骨精的做法是GOOGLE。
当然,关键字是Win7 iis安装包。GOOGLE肯定会给出一大堆的链接,挑一个顺眼的,顺顺当当地当下来了。
安装后,反正感觉不对劲,找不到入口??
这个WIN7,唉,还是再G吧。
折腾几个小时,鬼火冒。好象这个冒字是最容易写错的汉字。多年的Coder经历让我练就了一种绝活:发散思维就象那天马行空,这马上有钱流行了,我也就收回心了。
佛曰:放下。我就第二天再来。
再来G,就不会找Win7 iis安装包了,思路豁然开朗,找win7 安装IIS不就OK了。哈哈,网上居然图文并茂,原来在win7下设置程序和功能,设置IIS即可。这种教程到处都是哈,不用再往上贴图了。
象咱这种编程土豪来说,硬盘空间足够大,内存一般会有4G,所以,对待安装时的勾选来说,就会象充手机话费一样,大手一挥说:充满!
然后确定,准备等结果,结果是傻眼了:
这个问题,处理起来比第一个问题还要火冒,连微软的祖坟都挖了,纯英文版的解决方案都试过了,居然都不行!!
最后,我随便改一个选项,再确定,还是这么提示。
彻底无语。
这之间哗啦哗啦过了半个多月,我要和它说BYE BYE。
还有两天,这2013年就要过完了,这个问题不能象钓鱼岛一样留待子孙后代去解决吧。老子发发狠,一定要解决它。
发狠是很容易的,傻眼还是继续,看着那一次次的对话框跳出来,我甚至都想编个程序,等它跳出来时,把里面的文本内容改掉,呃,这个还是很容易的,什么FindWindow、SetText等API可以派上大用场。
我突然想起,我还有计算机!!!!
换计算机,人品大爆发,安装成功了。
我能说什么?如果用户那里安装不成功怎么办?
哈,这不是问题,直接换机。换到可以成功安装IIS为止。
姑且按下这个不表,先看看效果。这个WIN7的IIS界面,有点太不适应
猛一看,不知道该从哪里下嘴。
所幸自己还是清醒的,知道该创建虚拟目录,或网站,这个还是能找到的
回过头一看,还是这个界面,什么时候才能看顺眼呢。
实在不爽,突然看见下边有"内容视图",哈,熟悉的界面出来了
在CbwGraphWS.dll上右键点浏览,那肯定是不会打开IE出现WSDL的,如果行了那不就说明微软更退步了。
说明咱的经验还有效。
下面该做什么呢?再回想一下,哦,在以前的IIS中,需要开启ISAPI、CGI之类的,还要允许自己的DLL运行,好象还有个"脚本和可执行程序"需要选择。
这个新的界面下面需要在哪里设置呢?
在这个新的界面下,左冲右突,老是找不到,右键菜单下已经没有属性选项了。这个微软,怎么说你好!
还是G吧。(有用链接:http://hi.baidu.com/lzj1981/item/a0a71a0dc4b70e90a3df43b0)
哦,在IIS下有ISAPI和CGI限制选项
赶紧双击打开看看:
不错,感觉有戏。
再按小猫的技术博客,设置权限:
不过,感觉还没有地方设置"脚本和应用程序"这个选项,或者叫"执行"选项。直接搜"win7 iis webservice 脚本和可执行文件",找到老许的博客(http://www.cnblogs.com/college/archive/2012/08/10/2631731.html)
IIS7 如何设置读取、脚本和可执行文件的执行权限
对IIS服务器,通过配置功能权限可以设置访问策略,访问策略指定 IIS 中 Web 服务器、站点、应用程序、目录或文件级别的所有处理程序可以具有的权限类型。 可以在访问策略中启用或禁用的功能权限包括读取、脚本和执行。 处理程序能否运行由访问策略以及处理程序所需的访问设置共同决定。 如果处理程序需要未在访问策略中启用的功能权限类型,该处理程序将被禁用,并且该处理程序处理的所有请求(根据处理程序映射)都将失败,除非请求可以由另一个处理程序处理。在IIS 5及IIS 6中,我们可以通过配置网站的属性来对网站的权限级别设置成以下几种情况:读取、写入、脚本资源访问、目录浏览、记录访问、纯脚本、脚本和可执行文件等。这几种权限的具体情况如下:
读取:用户可以查看文件内容和属性。
写入:用户可以更改文件内容和属性。
脚本资源访问:用户可以访问文件的源代码,如 Active Server Pages (ASP) 应用程序中脚本资源访问的脚本。仅当指派了"读取"或"写入"权限时,才能使用此选项。用户可以访问源文件。如果 指派了"读取"权限,则可以读取源代码。如果指派了"写入"权限,则也可以对源代码进行写入。
目录浏览:用户可以查看文件列表和集合。
记录访问:为每次网站访问创建一个日志项目。 记录访问 索引资源 允许索引服务索引该资源。
纯脚本: 纯脚本将应用程序的权限设置为"纯脚本"可以使映射到脚本引擎的应用程序在此目录中运行, 而无需拥有为可执行文件设置的权限。 将权限设置为"纯脚本"比将它们设置为"脚本和 可执行文件"更安全,这是由于您可以限制能够在该目录中运行的应用程序。
脚本和可执行文件:将应用程序的权限设置为"脚本和可执行文件"以允许应用程序在此 脚本和可执行文件目录中运行,其中包括映射到脚本引擎的应用程序和 Windows 二进制文件(.dll 和 .exe 文件)。
但在IIS 7中,我们发现,我们已经找不到相应的选项了,事实上它并未消失,配置方法如下:
1、打开 IIS 管理器,然后导航至您要管理的级别;
2、在"功能视图"的"server主页"、"site 主页"或"application 主页"页上,双击"处理程序映射";
3、在"操作"页上,单击"编辑功能权限";
4、在"编辑功能权限"对话框中,执行以下操作:
选中"读取"可启用需要对虚拟目录具有读取访问权限的处理程序,清除"读取"可禁用需要对虚拟目录具有读取访问权限的处理程序。
选中"脚本"可启用需要对虚拟目录具有脚本权限的处理程序,清除"脚本"可禁用需要对虚拟目录具有脚本权限的处理程序。
选中"执行"可启用需要对虚拟目录具有执行权限的处理程序,清除"执行"可禁用需要对虚拟目录具有执行权限的处理程序。 只有当"脚本"处于选中状态时,"执行"选项才启用。
5、单击确定
另外,我们也可以通过命令行的方式来进行权限的配置,语法如下:
appcmd set config /section:handlers /accessPolicy: NoRemoteScript|NoRemoteExecute|NoRemoteRead|NoRemoteWrite|Script|Source|Execute|Write|Read|None
我们可以为 accessPolicy 属性指定其中的一个或多个选项,或者指定 None。 如果指定多个值,请用逗号 (,) 分隔各个值。 例如,若要启用需要 Read 或 Script 权限的处理程序,请在命令提示符处键入如下命令,然后按 Enter:
appcmd set config /section:handlers /accessPolicy:Read,Script
我还是直接用图形化界面选项设置,原来如此简单,以下三个为屏幕截图:
现在再浏览,哈,要的结果出来了:
在剩下的两天时间里,把网络访问功能恢复出来。继续找大鹏去聊天,他一个人跑到国外去搞定项目,有友如此,夫复所求。