【发布时间】:2012-11-28 20:49:34
【问题描述】:
我正在尝试将 iFrame 嵌入到 Orchard CMS 部分(相同的域 - 控件位于 Orchard 主安装的子目录中)。我在这里找到了两个讨论我遇到的问题的线程(请参阅here 和here),但我仍然遇到问题。我试图在 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