none
Webの発行 RRS feed

  • 質問

  • いつも大変お世話になってます。
    書籍に読みながら、ASP.NETの学習を進めていますが、質問があります。

    私の学習環境: Visual Studio 2010 Professional, C#

    現在学習しているPCにIIS 7.5をインストールして、
    仮想ディレクトリ http://localhost/Diary   (Diary: 日記の学習サンプルアプリ)
    物理フォルダ   C:\inetpub\Diary
    作成しました。

    ここまでは、書籍と同じ環境だったので出来ました。
    次に物理フォルダDiaryに学習で作成したデータをコピーするのですが、この部分が書籍と環境が違っていて、うまく進みません。

    単純にVS2010のプロジェクトを右クリックして、[発行...]を選択すると、[Webの発行]ダイアログが表示され、
    サービスURL: localhost
    サイト/アプリケーション: Default Web Site/Diary
    として、[発行]ボタンをクリックしました。
    そうすると、物理フォルダーに学習で作成したデータがコピーされました。

    その後、SQL Espressを使っているので、mdfファイルがあるApp_Dataフォルダのセキュリティーを
    userが変更可能に設定しました。

    IEでURLにアクセスしたところ、作成した日記ページにアクセスできましたが、データーベースにアクセスするところで、

    '/' アプリケーションでサーバー エラーが発生しました。
    リソースが見つかりませんでした。
    説明: HTTP 404. 探しているリソース (または、その依存関係の 1 つ) が削除されたか、名前が変更されたか、
    また一時的に使用できません。以下の URL のスペルが正しいことを確認してください。

    とエラーになりました。
    調べたところ、Web.Release.configとかSQLのパッケージ化/発行なども、設定しないといけないのでしょうか?

    どなたか、解決方法が分かるかたがおられたら、御伝授して頂けたらありがたいです。
    よろしくお願いします。

    2012年6月23日 5:02

回答

  • いろいろ調べたところ、単純なミスでした。

    Default.aspx(日記一覧ページ) スタートページ設定

    VS2010での実行は、日記DBへの追加後に

    Response.Redirect("/Default.aspx");

    としてDefault.aspx(日記一覧ページ)に移っていたのですが、

    IISの設定で 仮想ディレクトリ http://localhost/Diary  としたので、エラーとなったようです。

    Response.Redirect("/Default.aspx"); を Response.Redirect("/Diary/Default.aspx");

    と修整したら、動きました。

    大変お騒がせして、申し訳ありませんでした。

    • 回答としてマーク noriyasu 2012年6月23日 15:02
    2012年6月23日 15:01

すべての返信

  • いろいろ不明ですが、たぶん以下のようになっていると想像して、

    (1) Web アプリケーションプロジェクト(Web サイトプロジェクトで
      はなくて)

    (2) VS2010, IIS7.5, SQL Server はすべて開発マシン(同一 PC)に
      インストールしてある。

    (3) SQL Server Express にはユーザーインスタンスを利用して接続し
      ている。

    (4) Web アプリは IIS7.5 上で、サイトまたは仮想ディレクトリ(ア
      プリケーション)に設定してある。

    (5) ASP.NET 開発サーバー上で動かすと問題の SQL Server への接続
      はうまくいく。

    この理解であっていれば、users だけでなくワーカープロセスのアカ
    ウントにも App_Data フォルダに対する「読み取り」権限(「書き込
    み」権限に加えて)を与えてみてください。

    Application Pool Identities
    http://surferonwww.info/BlogEngine/post/2012/06/23/how-to-produce-and-use-shdocvw-and-axshdocvw.aspx


    ハズレだったらすみません。

    2012年6月23日 7:58
  • SurferOnWww様 アドバイスありがとうございます。

    私の情報が少なすぎて、推理までして頂いて申し訳ありませんでした。

    (1)~(5)について推理通りです。さすがです。

    ただ、(3)のユーザーインスタンスを利用というのが、分からないなりに調べたところ、

    web.configのデータから推測するに多分そうだと思います。

    また、”ワーカープロセスのアカウントにも App_Data フォルダに対する「読み取り」権限”とのことですが、

    ワーカープロセスというのが分からず、調べたのですが・・・。NETWORK SERVICEのことでしょうか?

    いろいろ調べたところ、NETWORK SERVICEに対して[フルコントロール]の[許可]をチェックするようなことが載っていたので、試してみました。しかし、結果は同じエラーが発生しました。

    でも、エラー後に、もう一度URLにアクセスに行くと、データが追加されて表示されてました。

    ということは、DBへの書き込みは成功して、その後、その結果を表示するページにアクセスするとエラーが発生するような感じです。

    また、いろいろ調べてみます。ありがとうございました。


    • 編集済み noriyasu 2012年6月23日 14:09
    2012年6月23日 13:42
  • いろいろ調べたところ、単純なミスでした。

    Default.aspx(日記一覧ページ) スタートページ設定

    VS2010での実行は、日記DBへの追加後に

    Response.Redirect("/Default.aspx");

    としてDefault.aspx(日記一覧ページ)に移っていたのですが、

    IISの設定で 仮想ディレクトリ http://localhost/Diary  としたので、エラーとなったようです。

    Response.Redirect("/Default.aspx"); を Response.Redirect("/Diary/Default.aspx");

    と修整したら、動きました。

    大変お騒がせして、申し訳ありませんでした。

    • 回答としてマーク noriyasu 2012年6月23日 15:02
    2012年6月23日 15:01