1

我有一个名为BasicTestProject的 .Net 4.0 项目,它包含一个名为Default的网络表单。

默认.aspx:

<%@ Page Language="C#" AutoEventWireup="true" 
         CodeBehind="Default.aspx.cs" Inherits="BasicTestProject.Default" %>

默认.aspx.cs:

namespace BasicTestProject 
{
    public partial class Default : System.Web.UI.Page 
    {
       ...
    }
}

我想将此应用程序的编译版本放在网站的子文件夹中:

  • 网站根
    • 子文件夹
      • 基础测试项目

在网站根目录,我有一个基本的 web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <compilation targetFramework="4.0" />
    </system.web>
</configuration>

我对上面的示例进行了测试,当我尝试访问子文件夹(http://WebsiteRoot/SubFolder/BasicTestProject/Default.aspx)中的站点时,这是我得到的错误:

Parser Error 

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'BasicTestProject.Default'.

Source Error: 

Line 1:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="BasicTestProject.Default" %>
Line 2:  
Line 3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Source File: /*WebsiteRoot*/*SubFolder*/BasicTestProject/default.aspx    Line: 1 

--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272 

另外,我应该提到我已经尝试将我编译的 BasicTestProject 放在它自己的 IP 地址上,以便它位于根文件夹中。这按预期工作,我可以访问 Default.aspx。

更新(答案):

在 IIS7 中,我右键单击 BasicTestProject 并将其转换为应用程序。

  • 网站根
    • 子文件夹
      • 基础测试项目

我还必须授予应用程序池用户对 BasicTestProject 文件夹的权限。它现在是独立运行的。

4

2 回答 2

2

您是否将该子文件夹配置为 IIS 中的应用程序?

于 2012-07-16T23:54:34.680 回答
1

我将详细说明@MikeC 的回答:在 IIS 中有“应用程序范围”的概念,它是属于同一概念“应用程序”的文件系统树的子层次结构。

每个单独的 IIS 网站的根也被标记为新应用程序范围的根。在作用域中执行的任何服务器端代码都在作用域所属的应用程序池中运行(例如,CGI 和 FastCGI 进程在作用域池的标识下启​​动)。ASP.NET 通过将应用程序范围的根定义为它期望找到bin目录的位置以及允许web.config定义更多选项来进一步实现这一点。

正如我所说,这适用于文件系统层次结构,所以如果您使用 URL 重写或 ASP.NET URL 路由,那么它会使事情复杂化。

(这最初是对 Mike 答案的评论回复,但它超出了消息长度)。

于 2012-07-17T00:07:05.563 回答