我想澄清 MSDN 文档中似乎有矛盾的地方。
MSDN 非常清楚地区分了“网站”和“Web 应用程序”。 例如,它说你应该使用“应用程序”而不是“站点”,如果......
您希望避免将源代码放在生产服务器上。
好的,听起来不错,但是当您创建 ASP.NET MVC“应用程序”或 WCF 服务“应用程序”时,您首先会得到一个描述文件,其中CodeBehind
包含指定要引用的源代码。例子:
对于 ASP.NET MVC
<%@ Application Codebehind="Global.asax.cs" Language="C#" Inherits="Sample.MvcApplication" %>
对于 WCF 服务应用程序
<%@ ServiceHost CodeBehind="MyService.svc.cs" Language="C#" Service="Sample.MyService" %>
在这两个“应用程序”示例中,“代码隐藏”假定您已将源代码放在生产服务器上。简而言之,您从 Visual Studio“应用程序”或“项目”模板收到的内容基本上与 MSDN 文档的声明相矛盾。
更奇怪的是,至少在某些情况下,这不需要是这样的。例如,生成 WCF 服务描述文件的另一种有效方式是这样的:
<%@ ServiceHost Language="C#" Debug="true" Service="Sample.AccountService" %>
<%@ Assembly Name="Sample.AccountService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" %>
使用“Assembly”指令,无需指定 CodeBehind 目标。如果 WCF 应用程序(与 WCF 站点相比,它也是 Visual Studio 选项)的目的是在生产服务器上没有源代码,那么为什么没有生成服务定义文件,如上面最后一个示例所示?
允许这种明显矛盾的理由是什么?