最近忙于一个Web的Bug修正,是先人写的一个东东,架构很简单,一个前端的项目,一个WebService的项目,以及后台的一些dll。之前一直很排斥这个产品,因为它没法启动,印象中没有跑得起来过的时候。现在客户那边有问题,没办法,先人已不再,只能接手。
现在总算能顺利跑起来了,部署又有问题了。代码可以跑,部署到IIS里就报错,从报错的内容来看应该是WebService的服务没有找到,这就让人摸不到头脑了,网上也搜了各种各样的帖子,各种方法也试过,WebService也能正常浏览,就是调用不起来。QQ里问了两个人,不鸟,群里也问,直接无视,部门里也没别人搞着玩意,这可让人恼火了,真有点穷途末路的感觉。
为什么会调用不起来呢?权限吗?哥,我已经开放到everyone了,还要我怎么开?网上说看网址里直接输入地址能不能看到WebService的页面,能访问到就说明服务没有问题,我能正常访问页面,方法也一目了然,为什么我的页面调不起来,不带这么玩的。
我打算自己弄个小程序调调小的服务,一切从简,简单到只有一个HelloWord方法,也一样,代码能调,一部署就调不到。一个偶然的、不经意的一瞥,让我看到了破绽,嘿嘿,这玩意有玄机!玄机在哪,就在于路径!我注意到,iis部署好后WebService是能正常浏览,但路径并不是代码里调用的路径,难怪一直调不到,于是又设置了遍虚拟路径,指向WebService的物理路径,转换成应用程序,再次调用,成功!这个问题又花了我一天时间。
虽然成功了,我还是有两个疑问,如有高手路过,不妨为我解惑。
疑问一:如果iis部署时新建网站,这就要指定端口,这样访问时就要用IP带端口的形式访问,这有点怪怪的,我也没见百度后面还带个端口访问啊;如果都部署在默认网站里,那就不需要带端口,默认是80,直接localhost就能访问页面了,符合常理,但是VS里是会自动给你创建端口的,引用好之后就是固定映射,必须带端口,iis是可以建虚拟路径,但是不带端口的,我总不能让VS指定端口为80吧,不用试我都知道,肯定端口冲突。
疑问二:在新建网站的时候已经指向了物理路径,这时必须再添加个虚拟路径指向这个路径,否则就只能localhost+端口访问,这不是很二嘛,网站不可以指定虚拟路径,必须添加,既然这个路径有可能是没用的,那新建网站何必指向路径?既然是鸡肋,就做好鸡肋的本分,要不然功能就强大点。不知各位是否有这样的困扰。
大家有什么好的办法希望能指点指点。前面说的两个问题花费了我两天时间,期间也有不少小问题,都一一去尝试了,收获颇多,还是那句话,If you nerver try,you will nerver know.再接再励吧!