我有一个ASP.NET Web应用程序,我试图在CRM 4.0中作为ISV的子文件夹运行。
我已经使用以下结构部署了我的应用程序:
ISV\
MyAppName\
*.aspx
web.config
bin\
*.dll
我没有在MyAppName上创建新的IIS应用程序。
我的aspx文件都带有<%@ Assembly Name="MyAssembly" %>
标签。
正确加载页面,并按预期执行代码隐藏。
从JavaScript调用页面方法时出现问题。似乎没有加载ScriptModule,因为我对MyPage.aspx/MethodName
的请求返回整个页面标记。
我的代码隐藏和JavaScript都是正确的,我已通过在MyAppName创建应用程序并使用/ISV/MyAppName
而非/Orgname/ISV/MyAppName
访问网址来验证这一点。
通过/Orgname/ISV/MyAppName
访问时,如何使ScriptModule加载并按预期工作?
答案 0 :(得分:2)
正如this question中所述,我相信这种情况正在发生,因为CRM的web.config没有将System.Web.Handlers.ScriptModule指定为httpModule。您的自定义web.config可能会这样做,因此当您为其创建IIS应用程序时,httpModule将被加载并且您的页面方法可以正常工作。没有IIS应用程序,我相信大多数自定义web.config都会被忽略。我会尝试两件事:
1)删除自定义IIS Web应用程序。将System.Web.Handlers.ScriptModule添加到httpModules节点中的CRM的web.config。这看起来像这样:
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
(请注意,修改CRM的web.config不受支持,如果更新汇总会覆盖CRM的web.config并消除您的更改,则可能会很痛苦。)
2)编写单独的Web服务来执行页面方法的工作。它必须存在于一个单独的自定义Web应用程序中。