同时加载2个iframe

时间:2012-07-25 07:50:58

标签: c# asp.net html iframe iis-7

我已经开始在IIS 7上开发.Net 4中的网络聊天。聊天的主页包含2个IFRAME。第一帧用于保留消息并逐步加载(它会在连接到聊天的所有时间加载并传递消息以进行聊天)。第二个iframe用于发送消息。第一帧加载第二帧无法加载时出现问题,但如果第一帧停止加载,则以毫秒为单位执行秒。

  1. 我已经尝试过:
  2. 使用AJAX发送消息。
  3. 对第一帧和第二帧的脚本使用不同的名称。它有时会有所帮助,但并非总是如此。
  4. 检查用户刷新聊天主页后是否仍然运行脚本或关闭脚本。
  5. 在IIS中设置连接超时。
  6. 使用流式共鸣/文字回复。
  7. 连接keep-alive / no keep alive指令。
  8. 主要聊天页面的交换iframe标记。
  9. 以不同方式添加聊天主页的CSS JS文件,即@import CSS。
  10. 使用。
  11. 删除踩踏

    我发现了一个解决方案,但我不认为这是使用很多域的好方法,因为域访问javascript限制。 iFrames not executing in parallel

    这是Test.aspx和Test.aspx.cs页面代码:

    <%@ Page Title="Home Page" Language="C#"  AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="Test._Default" %>
    
    using System;
    using System.Web;
    using System.Threading;
    
    namespace Test
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
            string p = (Request.QueryString["p"] != null)?Request.QueryString["p"]:"";
            if(Request.QueryString["data"] == null)
            {
                Response.Write(@"<html><head></head><body>12<iframe src=""Test.aspx?data="" height=""900px""></iframe><iframe src=""http://localhost/Test"+p+@".aspx?data=""  height=""900px""></iframe></body></html>");   
            }
            else
            {
                System.IO.File.AppendAllText(Server.MapPath(".")+ @"\test.log", DateTime.Now.ToString()+ "\t" + "Data script started\r\n");
                Response.Write(new String(' ', 1024));
                int i=0;
                while (Response.IsClientConnected)
                {
                    Response.Write((++i).ToString() + " ");
                    Response.Flush();
                    Thread.Sleep(1000);
                    System.IO.File.AppendAllText(Server.MapPath(".")+ @"\test.log", DateTime.Now.ToString()+ "\t" + "Data script Runned\r\n");
    
                }
                System.IO.File.AppendAllText(Server.MapPath(".")+ "test.log", DateTime.Now.ToString()+ "\t" + "Data script stoped\r\n");
            }
        }
        }
    }
    

1 个答案:

答案 0 :(得分:1)

您是否考虑过在NuGet中查看SignalR(beta)软件包 - 它是为编写此类应用程序而定制的,与Node.js有相似之处。我强烈建议您考虑使用这项技术来解决这个问题。

可以在git hub https://github.com/SignalR/SignalR和Nuget http://nuget.org/packages/SignalR上找到它。