[AX]AX2012激活HTTP适配器AIF端口提示错误“The deployment web site was not found for port”

在AX2012中AIF中新建了一个使用HTTP适配器的Inbound port,在试图激活这个端口时出现错误:

“The deployment web site was not found for port: WebSalesOrderRead”

这里WebSalesOrderRead是这个入站端口的名称。使用HTTP适配器的首要条件是要安装Web service on IIS组件,这一步当然已经成功完成,在System administration > Setup > Services and Application Integration Framework > Web sites下已经成功生成相应的记录:

Name: DAX-MicrosoftDynamicsAXAif60

Virtual directory share path: \\DAX\MicrosoftDynamicsAXAif60

URL: http://DAX/MicrosoftDynamicsAXAif60/

这是安装完Web service on IIS自动添加的一个站点记录,未做任何修改,DAX是服务器的名称,在这个form上使用“Validate”验证这个站点也是成功的,消息提示站点已找到且可读可写等。但是在发布HTTP端口时却找不到站点确实有点奇怪。搜索发现也有人有类似的问题:https://community.dynamics.com/product/ax/f/33/t/65838.aspx,按照帖子的内容验证了相关目录的权限后重试,问题依旧;卸载Web service on IIS组件后重新安装,也是同样的错误。继续google,终于在这篇讨论(http://community.dynamics.com/product/ax/f/33/p/84342/187837.aspx)中找到了答案,解决办法很简单,就是上面的URL多了一个“/”,真的是无语啊,把URL修改成“http://DAX/MicrosoftDynamicsAXAif60”后再次激活端口成功!

这个错误是怎么产生的呢?在 \Classes\AifServiceDeployer\getIISDeploymentPath()我们找到答案,在这个函数中首先调用webSiteUrl = AifWcfHttpAdapter::getWebSiteUrl(inboundChannel.TransportAddress, inboundPortName)从我们配置的端口URI得到相应的站点地址,端口的URI为“http://DAX/MicrosoftDynamicsAXAif60/WebSalesOrderRead/xppservice.svc”,所以得到的站点地址为“http://DAX/MicrosoftDynamicsAXAif60”,注意这里没有那个“/",然后要做的就是用这个站点地址从站点配置表中查找相应的记录:webSitesTable = AifWebSites::findForUrl(webSiteUrl)。而前面自动生成的站点URL后面有个“/”,两者不一样自然找不到相应的站点表记录,结果就是我们看到的错误了。

发生错误的AX版本号为6.0.947.0,不知道有没有fix来自动判断有没有那个“/”。

原文地址:https://www.cnblogs.com/duanshuiliu/p/2880875.html