将ScriptModule添加到CRM 4.0中的ISV文件夹

时间:2011-01-27 16:26:58

标签: asp.net asp.net-ajax dynamics-crm dynamics-crm-4

我有一个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加载并按预期工作?

1 个答案:

答案 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应用程序中。