2012-11-28 75 views
0

我想嵌入一個果園CMS部分(相同的域 - 控制住在一個子目錄關閉主果園安裝)。我在這裏發現了兩條線索,談論我遇到的問題(請參閱herehere),但我仍然遇到問題。我試圖在iFrame中加載的頁面是標準的WebForms,並且需要WebResource.axd和ScriptResource.axd。我設法讓WebResource.axd工作,但ScriptResource返回500內部服務器錯誤(根據Chrome),但我無法弄清楚是什麼導致了500或什麼是真正的錯誤。從我的web.config相關的條目如下 - 任何建議?果園,WebForms和iFrames

<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> 
+0

關閉自定義錯誤以獲取正確的堆棧跟蹤。 但是真正你最好的選擇是把你的webforms放在一個完全獨立的應用程序中。您已經在iframe中使用它,所以它應該沒關係。 –

+0

我試過了(而且還在玩它),但沒有運氣。這個問題似乎是父配置的條目。當在子應用程序(不是虛擬目錄)中時,ScriptResource.axd會返回一個404,直到我從system.webServer/handlers中的父級刪除標記,但是刪除它會打亂Orchard非常糟糕。還有其他建議嗎? – RubyHaus

+0

不是* Orchard應用程序下的應用程序*,它是一個獨立的應用程序*。如果你把Orchard放在\ Inetpub \ wwwroot下,那麼這首先不是一個好主意。最好在其他地方創建vdirs或在其下創建vid,然後將IIS指向這些目錄。希望這可以幫助。 –

回答

0

結合貝特朗的建議和大量玩耍,我最終找到了解決辦法。

首先,自定義的東西需要位於子文件夾中,而在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參考,它看起來像一切工作中。