如何将ASP.NET网站(或Web应用程序)嵌入另一个?

时间:2009-07-16 15:54:57

标签: asp.net visual-studio-2008 html-frames

我对ASP.NET的经验很少,在开始编写我的第一个网站/应用程序之前,我正在进行一些自我培训,这将是一个校准工具。这个实用程序的工作方式现在不是我关注的问题。但是,该实用程序最终需要最终嵌入到其他人的网站中,或者只是作为带有我的代码的页面的URL,或嵌入(例如,作为HTML框架或iframe)。为了弄清楚这个的基础知识,我编写了两个非常简单的ASP.NET网站,一个包含框架集的“父”,以及一个我试图放入其中一个框架的“子”。

父母的“Default.aspx”HTML代码基本上是这样的:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Parent Site Test 1</title>
</head>

<frameset cols="300,*">
    <frame name="outer" src="parent.aspx" noresize></frame>
    <frame name="inner" src="[what do I put here?]"</frame>
</frameset>

</html>

“parent.aspx”页面中只包含最基本的HTML:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        I am the parent web form.
    </div>
    </form>
</body>
</html>

为了本练习的目的,儿童网站(我现在拥有)住在一个单独的VS2008解决方案中,因为我试图重现其他人的网站必须引用我的校准网页的条件/现场/事。我原本以为会有一些方法将整个孩子打包成一个DLL,然后会有一些方法告诉父母使用该DLL作为子帧的源。这来自我在Java世界中的经验 - 使用JBoss和J2EE,这很容易解决,因为孩子只会被部署为另一个EAR文件。

由于对VS2008和ASP.NET完全没有经验,过去几天我在Google上花了几个小时试图找到答案,但无济于事。

  • 我正在努力做到合理;这是考虑解决问题的正确方法吗?

  • 我可以将孩子部署为一个相当独立且独立的网站(或网络应用程序......我仍然不清楚这些差异),以某种方式将其打包成一个DLL?如果是,那么我如何从VS2008中的我的网站/应用程序实际创建这个DLL,然后如何在父网站中引用它?

  • 如果我完全偏离此处,我该如何以其他方式创建此父/子组合?孩子(实际上,我最终会写的校准实用程序)确实需要在ASP.NET中(使用C#),但我对父站点没有任何控制权,因为它是别人的代码,他们只想成为能够放弃我的实用程序。

感谢您的帮助!你可以越具体,越好。我是ASP.NET和Visual Studio的新手,虽然我有很多其他语言和IDE编程经验。

3 个答案:

答案 0 :(得分:1)

如果您知道客户端也使用ASP.Net,您可以将其构建为用户控件。

答案 1 :(得分:1)

如果您有IIS6或更高版本,则可以运行这两个Web应用程序,并在您的src =“[这里有什么]”中放置子网站的本地URL(可能是http://localhost/ChildTestWebsite/child.aspx)。然后当你加载http://localhost/ParentTestWebsite/Default.aspx时,你应该看到框架。

要将它打包成单个DLL,我相信你必须让它只是像Joel所说的用户控件,否则你有DLL + aspx页面。

答案 2 :(得分:1)

您应该做什么取决于父母和孩子之间的互动方式。

如果父级不打算访问子级上的任何服务器端功能,则只需引用帧标记上src中的绝对http路径即可。如果您尝试访问javascript方法并且2个应用程序位于不同的Web服务器上,则可能会在某些浏览器中出现安全问题,但这不是特定于.NET的。

如果父级要访问服务器端功能,则需要在父项目中的某处提供服务器端组件。这更复杂。我认为你必须将所有子页面构建为包含在父aspx页面中的Web控件。

1:将子项目构建为可由父级使用的服务器控件的Web控件库。这是保持部署的最佳方法。一切都内置在一个单独的DLL中。最大的缺点是服务器控件只能用代码开发。你没有视觉设计师来帮助你。

2:创建Web应用程序项目。在VS2008中,您可以通过“新建项目”执行此操作,然后找到“ASP.NET Web应用程序”模板。这意味着一个Web项目,其中所有代码(cs文件中的所有内容)都构建到一个dll中。在此方案中,您将创建父页面可以使用的用户控件(ascx文件)。这样做的缺点是必须在runnin Web应用程序上运行用户控件,因此必须将所有ascx文件复制到父网站的已部署位置。还必须将dll复制到父网站中的bin文件夹。在这里,您的优势是在VisualStudio中设计GUI要简单得多。为ascx用户控件设计gui和代码非常类似于创建完整的aspx网页。

相关问题