Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Content management system 果园、网络表单和iFrame_Content Management System_Orchardcms - Fatal编程技术网

Content management system 果园、网络表单和iFrame

Content management system 果园、网络表单和iFrame,content-management-system,orchardcms,Content Management System,Orchardcms,我正在尝试将iFrame嵌入Orchard CMS部分(相同的域控件位于Orchard主安装的子目录中)。我在这里找到了两条关于我遇到的问题的线索(请参见和),但我仍然遇到了一些问题。我尝试在iFrame中加载的页面是标准WebForms,需要WebResource.axd和ScriptResource.axd。我设法让WebResource.axd正常工作,但ScriptResource返回了一个500内部服务器错误(根据Chrome),但我无法找出是什么导致了500内部服务器错误,或者真正的

我正在尝试将iFrame嵌入Orchard CMS部分(相同的域控件位于Orchard主安装的子目录中)。我在这里找到了两条关于我遇到的问题的线索(请参见和),但我仍然遇到了一些问题。我尝试在iFrame中加载的页面是标准WebForms,需要WebResource.axd和ScriptResource.axd。我设法让WebResource.axd正常工作,但ScriptResource返回了一个500内部服务器错误(根据Chrome),但我无法找出是什么导致了500内部服务器错误,或者真正的错误是什么。下面是my 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>

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

首先,自定义内容需要位于子文件夹中,并且在IIS中,您可以将该子文件夹切换到应用程序(而不是虚拟目录)。为了让大家安心一点,我还为它提供了一个专用的应用程序池,这样,如果它真的出了什么问题,主站点就不会宕机了

接下来的部分涉及几个步骤——主要是因为system.webServer/handlers中的条目。在父应用程序中删除此项会破坏Orchard,但在我的子应用程序中使用它会破坏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>


查找所需的“真实”ScriptResource.axd引用,并且看起来一切正常。

关闭自定义错误以获得正确的堆栈跟踪。但实际上,最好的办法是将webforms内容放在一个完全独立的应用程序中。你已经在iframe中使用了它,所以这不重要。我已经尝试过了(现在还在玩),但是运气不好。问题似乎是父配置的条目。当在子应用程序(不是虚拟目录)中时,ScriptResource.axd返回404,直到我从system.webServer/handlers中的父级中删除标记为止,但是删除该标记会非常糟糕。还有其他建议吗?不是Orchard应用程序下的应用程序,而是它之外的单独应用程序。如果将Orchard放在\Inetpub\wwwroot下,那么首先这不是一个好主意。最好在其他地方或下面创建VDIR,并将IIS指向这些目录。希望这能有所帮助。我不使用inetpub(同意这是一种不好的做法),但我确实在下面有这个应用程序。在尝试这一点之前,我升级到了.Net 4.5 RTM(当时是Beta版,没有意识到),自从升级后,我遇到了一个新问题,移动它并没有解决这个问题。我为这个问题提出了第二个问题,因为从技术上讲,这是可行的,直到我进一步了解它。这个问题是: