1

试图发布一个简单的 ASP.NET 项目,使用 MS Visual Web Developer 2010 Express 到标准的 Windows 7 安装的 IIS,我完全失去了理智。我在互联网上搜索了解决方案,但没有找到任何有效的方法。
我真的希望有人能帮忙!

我开发了一个试图发布的页面,当我从 Visual Studio 运行它时它运行良好。但是,当我使用 Visual Studio 中的发布工具(到文件系统)进入我的 Windows 7 IIS 网站时,我收到一条错误消息,提示我的 Page 指令不正确。

我决定从绝对基础开始,尝试发布默认项目的内容,看看我是如何处理的,但这似乎有同样的问题。这是我经历的步骤。

我创建了一个名为“pea5”的新项目。默认情况下,“ASP.NET Web 应用程序”项目类型是用一个母版页和一个包含一些登录控制页面的Account文件夹创建的——这两个我都不想要,所以我删除了Account文件夹、masterpage.aspx和 About .aspx 页面。这要求我从剩余的Default.aspx标记中的 Page 指令中删除 MasterPageFile="~/Site.master",并且我还必须从标记中删除封装的 Content 标记,因为它们只能工作在母版页配置中。这在我的Default.aspx标记文件中留下了以下内容...

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="pea5._Default" %>
    <h2>
        Welcome to ASP.NET!
    </h2>
    <p>
        To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
    </p>
    <p>
        You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
            title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
    </p>

代码隐藏文件只包含一个空的 Page_Load 方法,如下...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace pea5
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

我还从我的web.config文件中删除了身份验证、成员资格、配置文件和角色管理器部分,因为我没想到在之前删除了登录页面之后我会再需要这些部分。所以我的web.config文件看起来像这样......

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

当我运行该项目时,Default.aspx页面完美加载。

然后我将我的项目(选择文件系统选项)发布到我的 IIS 文件夹结构中,当我使用 IE 浏览到Default.aspx页面时,出现以下错误。

解析器错误消息:无法加载类型“pea5._Default”。

为什么这在 Visual Studio 中可以很好地工作,但在 IIS 中却不行?!反正。我发现另一个 stackoverflow 后Parser Error Message: The file '/TestSite/Default.aspx.cs' does not exist这表明我需要更改标记的 Page 指令中的 CodeBehind 设置。

于是我变了...

CodeBehind="Default.aspx.cs"

...至...

CodeFile="Default.aspx.cs"

再次发布并刷新我的页面后,我在 IE 中收到以下错误。

解析器错误消息:文件“/Default.aspx.cs”不存在。

我发现这条消息很奇怪。肯定已经将我的代码发布到 bin 文件夹中的 DLL 文件中,我将不再需要代码隐藏来加载页面。果然,当我将代码隐藏文件Default.aspx.cs复制到我在 IIS 上发布的文件夹中时,该页面就可以正常工作了。

谁能解释为什么会这样?

有了这个发现,我就可以重新访问我最初开发的页面,不情愿地接受我必须上传我的代码隐藏文件才能让我的页面工作的事实。然而,这带来了一个新问题,因为我原始解决方案的默认页面引用了一个类......

clsLists myords = new clsLists();
myords.LoadList();

...并且页面在 IE 中返回了此错误消息...

编译器错误消息:CS0246:找不到类型或命名空间名称“clsLists”(您是否缺少 using 指令或程序集引用?)

我以为我还必须将我的clsLists.cs文件添加到我的已发布文件夹中才能成功引用它,所以我也复制了它,但我又收到了上面的消息。

如果有人能对此有所了解,我将永远感激不尽。如果需要,我很乐意提供有关我的配置的更多信息。

非常感谢,

院长。

4

1 回答 1

0

首先回到您的原始解决方案(代码隐藏),确保您的 .dll 位于 bin 目录(根目录)中,可能会被排除在外。您也可以尝试将您的站点转换为应用程序(在 inetmgr -> 右键单击​​您的站点 -> 转换为应用程序)。

于 2013-05-11T12:12:41.070 回答