1

MS Visual Web Developer 2010 Express を使用して、IIS の標準 Windows 7 インストールに単純な ASP.NET プロジェクトを公開しようとして、私は完全に気が狂ってしまいました。インターネットで解決策を探しましたが、うまくいったものは見つかりませんでした。
誰かが助けてくれることを本当に願っています!

公開しようとしていたページを開発しましたが、Visual Studio から実行すると問題なく動作しました。しかし、Visual Studio 内で (ファイル システムへの) パブリッシュ機能を使用すると、Windows 7 IIS Web サイトに、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ファイルから authentication、membership、profile、および roleManager セクションを削除しました。これは、以前にログイン ページを削除したため、これらが必要になるとは予想していなかったからです。したがって、私の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 では機能しないのはなぜですか?! ともかく。別のスタック オーバーフロー ポストパーサー エラー メッセージ: ファイル '/TestSite/Default.aspx.cs' が存在しません

だから私は変わった...

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 に答える