2014-06-26 69 views
1

我正在研究一個功能,我們的站點能夠加載另一個mvc站點。 基本上我使用Id = aquaVetIframe的iframe,我把我的mvc站點的URL(iframe的src屬性的設置是從代碼隱藏完成的)。一切工作正常在鉻。但是現在使用IE 10測試它,我在IE中看到的唯一東西就是登錄頁面。 用戶登錄後,頁面返回到相同的登錄頁面。我可以假設這與緩存有關,但我不是100%確定的。asp net mvc登錄頁面在iframe中不起作用

這裏的一些代碼: 我的aspx容器:背後

<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server"> 
<meta http-equiv="Cache-Control" content="max-age=0" /> 
<meta http-equiv="Pragma" content="no-cache" /> 
<meta http-equiv="Expires" content="-1" /> 
<style type="text/css"> 
    html, body{height: 100%;} 
</style> 
</asp:Content> 

<asp:Content ID="Content5" ContentPlaceHolderID="MainContent" runat="server"> 
    <div style="height: 100%; width: 100%;"> 
     <iframe id="aquaVetIframe" runat="server" allowfullscreen="true" style="position: absolute;height: 100%; width: 100%;border:0px"> </iframe> 
    </div> 
</asp:Content> 

代碼:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    Dim urlQueryString = Request.QueryString("urlId") 

    aquaVetIframe.Attributes("src") = urlQueryString 

End Sub 

在我的網頁我嘗試添加下一個標籤的頂部,但沒有運氣:

<meta http-equiv="Cache-Control" content="max-age=0" /> 
<meta http-equiv="Pragma" content="no-cache" /> 
<meta http-equiv="Expires" content="-1" /> 

這裏使用IE10和Chrome瀏覽器(當前是瀏覽器工作我的應用程序) http://postimg.org/image/iaifcljdz/ enter image description here UPDATE: 添加此行我的MVC應用程序,cookie是從IE允許和應用程序運行正常,而我直接運行在瀏覽器中的網頁(右鍵點擊在IE瀏覽器中運行VS2013)

context.BeginRequest += (sender, args) => HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""); 

的問題是什麼我現在是,當我運行從一開始我的應用我的MVC aplication沒有執行。對於一些奇怪的原因,從MVC應用程序的JS庫不加載.. 看屏幕截圖 error comming from mvc app

回答

1

三兩件事:

1)的iframe加載完整的html頁面。所以我建議你在你加載到iframe中的頁面(登錄頁面)內導入jquery庫。

2)測試本地主機服務器時,IE是一個很好的問題來源。它有時會強制與Intranet(包括本地主機)頁面上的IE8甚至IE7兼容。確保您已啓用IE10 +模式。 This question向您展示如何做到這一點:

您可以通過添加以下代碼到您的網頁

<head> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
</head> 

實現它,或者您也可以添加以下代碼在你的web.config中,system.webserver內標籤(創建它,如果它不存在):

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="X-UA-Compatible" value="IE=Edge" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 

3)當你沒有顯示你的標籤,包括JS文件,那麼這是一個好主意,看看他們(包括jQuery的那些)。確保:

  • 您正在打開和關閉<script></script>標記正確。包含JS文件時不要使用簡寫形式<script />,因爲它不起作用;
  • 確保您使用的是正確的路徑。使用相對路徑(如〜/ scripts/jquery.js)由於'〜'而不起作用。如果您使用的是您的網站根目錄的子文件夾,例如http://localhost/mysite/,您也可以發現一些問題。在這種情況下,你的包含應該包含文件夾/ mysite或使用相對路徑(如scripts/jquery.js,../scritps/jquery.js等)。

也許這是不夠的,但它是第一個需要的步驟來接近有效的代碼。

+0

嗨,我可以看到我的問題是與點數2,我試着按照鏈接顯示,但解決方案不適合我:) ..我會繼續與此工作,我會更新我的問題 – Rolando

+1

問題發生在容器應用程序的父頁面之一中.... ...壞事是我無法改變它.. – Rolando

1

轉到IE> interntet選項>安全>自定義級別>向下滾動雜項>查找「在IFRAME中加載程序和文件」>在第一次看能

0

請求中沒有變化的連續ajax調用通常被認爲是由某些瀏覽器緩存的,並且此問題在IE 10中特別重現。請求的響應爲HTTP 304 Not Modified,請求不會觸及數據庫。該解決方案是使用ajaxSetup緩存設置爲false,如:

$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

注意:這將緩存設置爲false會話中的所有Ajax調用。

OR

使用高速緩存:尤其是Ajax調用假的,如果你不希望禁用緩存所有的Ajax調用。

$.ajax({ 
     ... 
     cache: false, 
     ... 
     }); 

對於非Ajax調用,您可以使用:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(0)); 

,以應對因涉嫌緩存調用。

此外,它可能看起來很奇怪,但我也面臨類似的問題在IE中,但這是由於cookie。不知怎的,有兩個不同的餅乾創建相同的名稱&,因此存儲在cookie中的值沒有找到,因此用戶被卡在登錄頁面。檢查是否COOKIE也不是你的案件的罪魁禍首。