如何部署ASP.NET项目以便.aspx文件中没有代码?

时间:2011-03-15 20:39:36

标签: c# asp.net deployment

我最近成为ASP.NET Web项目的维护者。在部署一些更改的过程中,我们注意到在某些时候项目部署的方式发生了变化。该项目是一个Web应用程序项目。目前,当我将其“发布”到我的本地机器时,我可以打开各种.aspx文件并查看一些代码 - 一些ASP,主要是JavaScript,但大多数代码似乎都编译成.dll。 / p>

我们希望构建和部署此应用程序,以便.aspx文件中没有代码 - 这是它在以前的开发停止维护之前的工作方式。 .aspx文件中根本没有代码,只是对已编译的.dll文件的引用。

有谁知道我在说什么以及如何设置它?

编辑如果有帮助,看起来应用程序的旧版本只有.aspx文件中的文字说“这是预编译工具生成的标记文件,不应该是删除!”这就是我想要的。

4 个答案:

答案 0 :(得分:6)

如果您想为您的网站执行此操作,只需预编译项目以进行部署。您可以查看此MSDN article

中的确切步骤

这会将所有代码隐藏文件移动到.dll中,并创建.aspx.compiled文件,作为指向.dll中已编译版本的指针。听起来像以前做的那样。

答案 1 :(得分:1)

从客户端的浏览器中看不到代码。

代码隐藏中的任何代码都将编译为应用程序中的页面所引用的.dll。不应使用.aspx文件发布实际的代码隐藏文件。

.aspx文件中的.NET代码在客户端不应该是可见的,因为它在客户端没有用处。应该在服务器端执行它以将HTML输出呈现给客户端。如果在这种情况下.NET代码在客户端可见,则意味着服务器没有执行它,并且该站点基本上已损坏。

JavaScript代码,当然,需要在客户端可见。有一些方法可以对其进行模糊处理,但浏览器需要查看它才能执行它。因此,在这种情况下,代码应该在充分理解 公开可见的情况下开发,并且不应包含任何专有或妥协。

答案 2 :(得分:0)

JavaScript代码必须存在于客户端,因此必须在服务器上。内联ASP代码?我会考虑将其重写为.NET。

答案 3 :(得分:0)

为了在.aspx文件中没有代码,你需要在后面的代码中编写所有代码。您可以使用生命周期中的asp.net事件来执行客户端代码的生成。例如,可以在Page_Load中生成动态生成的HTML和javascript,并将其写为Response。您可能使用的任何asp.net都需要在其他所有内容的代码中动态生成。

您仍然会将HTML和javascript推送到客户端,但除了aspx页面中的标题信息之外,所有代码都将在assemblies / dll中。我只是在Web服务(RESTful)的上下文中完成了这项工作,我将XML推送到iPhone供消费。为一个完整的网站做这件事可能会非常麻烦。

如果担心是安全问题,那么这样做是没有意义的。将代码移动到程序集并不比aspx页面安全得多。如果要保持简洁,我建议转到ASP.NET MVC 3。