asp.net – IIS如何知道它是服务于一个网站还是一个Web应用程序
我了解网站项目即时编译源代码,Web应用程序项目将源代码编译成DLL(非常像ASP.Net 1.x).
但是如何在IIS中指定差异? 我知道Visual Studio知道 – 每个都有不同的项目,但是运行的实例(IIS框架)必须知道正在使用哪个编译模型,对吗?因为它是否知道是否即时编译? 一个请求进来,点击一个ASPX文件…以及该进程如何知道相关的CS文件是否需要编译(网站),或者是否在部署前已经完成(Web Application)? 我只是好奇指出这个差异.在web.config的某个地方? 解决方法
这些项目类型中的.aspx文件有一个微妙的区别.
如果你看一个网站项目,你应该看到这样的东西… <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> … Web应用程序项目将具有这样的.aspx文件… <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %> 请注意,第一个具有CodeFile属性,第二个具有CodeBehind属性.这是区分的地方. CodeBehind属性不会在运行时使用 – 它可以告诉VS.NET代码所在的位置,Inherits属性告诉运行时在二进制文件中要搜索哪个类. CodeFile属性在运行时使用,由aspnet_compiler.exe用于生成代码,然后使用Inherits属性. 有关这些属性的更多信息,请看这里… http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx 但是要回答你的问题“IIS如何知道?答案是“它不”. ASP.NET知道. 您可以通过执行以下操作来证明是这样的: >创建一个新的Web应用程序.这将包括一个Default.aspx和一个Default.aspx.cs. protected void Page_Load(object sender,EventArgs e) { Response.Write("hello"); } >编译项目,运行它,看看 protected void Page_Load(object sender,EventArgs e) { Response.Write("goodbye"); } >不要配合刷新浏览器您仍然会看到“hello”,因为编译代码仍然使用此字符串.>现在,将Default.aspx中的属性从CodeBehind更改为CodeFile.保存此文件.>刷新浏览器.你会看到“再见”显示.>在你的代码中改变“再见”到“我相信!”.保存.aspx.cs但不编译.>刷新浏览器,看“我相信!”,在房间里跳舞,启发:-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在ASP.Net网站上使用WCF服务的教程?
- asp.net-mvc – OWIN – Authentication.SignOut()不会删除
- asp-classic – 如何在经典的asp web应用程序中生成依赖图?
- asp.net-mvc – EditorFor忽略tabindex.你如何设置tabindex
- asp.net – 为什么GridView在回发后不会将标题行呈现为标题
- asp.net – 当请求具有查询字符串时,Web服务的缓存不起作用
- asp.net-mvc – 如何允许用户在ASP.NET MVC中创建永久链接?
- asp.net – 异步代码,无需等待完成
- asp.net-mvc – 实体框架核心可空外键
- asp.net-core – 在ASP.NET MVC Core中仍然存在ViewModel概