代码改变世界

iis5.1下练习Biztalk 2006 http adapter的500错误解决

2008-04-16 16:25  BAsil  阅读(1743)  评论(7编辑  收藏  举报

折腾了近两天,这个500的问题终于解决了,我都快崩溃了,我的笔记本是xp sp2,vs2005 vsts,sql2005 dev,biztalk en r2 eval版,作了Adapter Useages的HTTPRequestResponse个例子,在http://localhost/RequestResponse/default.aspx中点击提交按钮,正常的应该是调用http adapter返回response 可是却报500的错误,网上关于这个问题的帖子很多,但是解决方案就是那么几种,转过来转过去的,没有什么帮助,并且大都是window 2003 iis6的解决,我在window 2003 iis6下测试没有问题。下面我把我的解决思路整理一下,问题到最后解决很简单,就那么一下子,但是我却走了不少弯路,希望以后碰到问题的时候能够尽快地定位到错误点。
1. 500 错误按照微软msdn的说法,是用户的权限不够,需要用户有能够访问Biztalk biztalkMgmtDb的权限,可我把IUSER_***和IWAM_***加入Biztalk Isolated User组,仍然有问题,后来我甚至把包括administrators,biztalk server administrators,sso administrators等重要组都加了进来,还是失败。
2.由于我在浏览器执行http://localhost/HttpReceive1/BTSHTTPReceive.dll也报500错误,而且在windows 2003 iis6安装了biztalk 2006后有btshttprecieve.dll这个isapi这个扩展,我的注意力又转移到btshttprecieve.dll的加载上,我怀疑是不是iis5.1没有加载btshttprecieve isapi 扩展(我对isapi一窍不通,所以只是猜测,最后证明和这个也没关系)我试着在iis 5.1的filter里面加入btshttprecieve.dll,但是总是加载不进来,状态总是红色箭头,由于我对Isapi只有简单的了解,导致我花了很长的时间在研究怎样把它变成红色的箭头,当然无功而返。直到后来我发现window 2003 iis6能够正确执行该例子而http://localhost/HttpReceive1/BTSHTTPReceive.dll也报500错误,我才发现好像问题不是这里。
3. 后来看到msdn的配置http receive location的做法How to Configure IIS for an HTTP Receive Location,把其中虚拟目录中用到的应用程序两种保护级别:高和中的相应步骤配置了好几遍,仍然不行,只是我找不到msdn提到的配置Access Permission为Read和Execute的这一步(原因是因为我这里没有重建虚拟目录,而是使用执行HTTPRequestResponse Samples中的setup.bat默认创建的HttpRequestResponseSample的虚拟目录,每次都是修改这个目录的配置),期间有一次删除了这个目录,发现了上面提到的那一步,可是我又重建了一个同名的HttpRequestResponseSample目录,问题依旧。
4.  最后当我删掉HttpRequestResponseSample,重建了一个HttpReceive1的虚拟目录,问题却解决了。
总结了一下
1.用户必须有Biztalk Isolated User组权限
2.虚拟目录中用到的应用程序两种保护级别:高和中的相应配置在开发阶段影响不是太大,都可以
3.怀疑setup.bat建立的虚拟目录由于权限的问题并不正确,只是不知为什么删掉重建同名的虚拟目录还是不行,难道是缓存?
4.不要担心浏览器执行http://localhost/HttpReceive1/BTSHTTPReceive.dll报的500错误,
5.搞biztalk还是用window2003比较好,网上的牛人好像都是用03,出了问题可以向他们咨询。
P.S. 今天是我生日,真的是lucky day阿,吼吼。