【问题标题】:Orchard, WebForms and iFramesOrchard、WebForms 和 iFrames
【发布时间】:2012-11-28 20:49:34
【问题描述】:

我正在尝试将 iFrame 嵌入到 Orchard CMS 部分(相同的域 - 控件位于 Orchard 主安装的子目录中)。我在这里找到了两个讨论我遇到的问题的线程(请参阅herehere),但我仍然遇到问题。我试图在 iFrame 中加载的页面是标准 WebForms,并且需要 WebResource.axd 和 ScriptResource.axd。我设法让 WebResource.axd 工作,但 ScriptResource 返回 500 内部服务器错误(根据 Chrome),但我无法弄清楚导致 500 的原因或真正的错误是什么。我的 web.config 中的相关条目如下 - 有什么建议吗?

<handlers accessPolicy="Script">
  <!-- clear all handlers, prevents executing code file extensions, prevents returning any file contents -->
  <clear />

  <!-- Custom Controls -->
  <add name="ASPX" path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" requireAccess="Script"/>
  <add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode" />
  <add name="ScriptResource" path="ScriptResource.axd" verb="GET" type="System.Web.Handlers.ScriptResourceHandler" preCondition="integratedMode" />

  <!-- Everything below added from Orchard -->
  <!-- Return 404 for all requests via managed handler. The url routing handler will substitute the mvc request handler when routes match. -->
  <!--<add name="NotFound" path="*" verb="*" type="System.Web.HttpNotFoundHandler" preCondition="integratedMode" requireAccess="Script" />-->

  <!-- WebApi -->
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

【问题讨论】:

  • 关闭自定义错误以获得正确的堆栈跟踪。但实际上,您最好的选择是将您的网络表单内容放在一个完全独立的应用程序中。您已经在 iframe 中使用它,所以这无关紧要。
  • 我已经尝试过(并且仍在使用它),但没有运气。问题似乎是父配置的 条目。当在子应用程序(不是虚拟目录)中时,ScriptResource.axd 返回一个 404,直到我从 system.webServer/handlers 中的父级删除 标签,但是删除这个会破坏 Orchard 非常糟糕。还有其他建议吗?
  • 不是Orchard 应用程序 的应用程序,它是一个单独的应用程序,在它之外。如果您将 Orchard 放在 \Inetpub\wwwroot 下,那么这首先不是一个好主意。最好在其他地方或在其下创建 vdir 并将 IIS 指向这些目录。希望这会有所帮助。
  • 我不使用inetpub(同意这是不好的做法),但我确实在下面有应用程序。在尝试此操作之前,我升级到 .Net 4.5 RTM(在 Beta 版中并没有意识到),并且自从升级后我遇到了一个新问题并且移动它并没有解决这个问题。不过,我为此创建了第二个 SO 问题,因为从技术上讲,这一直有效,直到我更深入地研究它。这个问题在这里:stackoverflow.com/questions/13638627/…

标签: content-management-system orchardcms


【解决方案1】:

结合 Bertrand 的建议和大量的尝试,我最终找到了解决方案。

首先,自定义内容需要位于子文件夹中,并且在 IIS 中,您可以将该子文件夹切换到应用程序(而不是虚拟目录)。为了让您更加安心,我还为它提供了一个专用的应用程序池,这样如果它确实出现异常情况,主站点也不会关闭。

接下来的部分涉及几个步骤 - 主要是因为 system.webServer/handlers 中的 条目。在父应用程序中删除它会破坏 Orchard,但将它放入会破坏我的子应用程序,因为它继承了父应用程序的所有设置。为了解决这个问题,我的子应用必须具有以下 system.webServer 配置:

    <system.webServer>
  <handlers>
    <remove name="NotFound" />
    <add name="ASPX" path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" requireAccess="Script"/>
  <add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode" />
  <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </handlers>
  <modules>
    <remove name="WarmupHttpModule" />
  </modules>
</system.webServer>

我使用引用 here 的 SO 链接找到所需的“真实”ScriptResource.axd 引用,看起来一切正常。

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2011-10-07
    • 2013-05-18
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    相关资源
    最近更新 更多