加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – IIS如何知道它是服务于一个网站还是一个Web应用程序

发布时间:2020-12-15 22:50:30 所属栏目:asp.Net 来源:网络整理
导读:我了解网站项目即时编译源代码,Web应用程序项目将源代码编译成DLL(非常像ASP.Net 1.x). 但是如何在IIS中指定差异? 我知道Visual Studio知道 – 每个都有不同的项目,但是运行的实例(IIS框架)必须知道正在使用哪个编译模型,对吗?因为它是否知道是否即时编译
我了解网站项目即时编译源代码,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.
>将以下代码添加到Default.aspx.cs中:

protected void Page_Load(object sender,EventArgs e)
{
    Response.Write("hello");
}

>编译项目,运行它,看看
文本“hello”出现在浏览器中.
>现在,更改代码看起来
像这样,并保存.cs文件:

protected void Page_Load(object sender,EventArgs e)
{
    Response.Write("goodbye");
}

>不要配合刷新浏览器您仍然会看到“hello”,因为编译代码仍然使用此字符串.>现在,将Default.aspx中的属性从CodeBehind更改为CodeFile.保存此文件.>刷新浏览器.你会看到“再见”显示.>在你的代码中改变“再见”到“我相信!”.保存.aspx.cs但不编译.>刷新浏览器,看“我相信!”,在房间里跳舞,启发:-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读