misc.log

日常茶飯事とお仕事と

情報処理安全確保支援士/業務上の判断指針や参考資料

メモです。情報処理安全確保支援士(情報セキスペ)の作業や業務に於ける参考情報の所在。

サイバーセキュリティ基本法

平成26年法律第104号。
elaws.e-gov.go.jp

内閣サイバーセキュリティセンター(NISC)

サイバーセキュリティ関連法令Q&Aハンドブック。
www.nisc.go.jp

サイバーセキュリティ (岩波新書)

サイバーセキュリティ (岩波新書)

ASP.NETプロジェクトのApp_Codeフォルダー

自社内で誰もこのあたりきちんと新人とかに説明してないだろうから、ちょっとメモっておきます。ASP.NETの開発プロジェクトなどは近年結構変わってきているので、下記の情報はあくまで「ASP.NET Webサイト」タイプの古い開発プロジェクトの話です。最新のASP.NET Core Webアプリなどがどうなっているかは把握できてません。ごめんなさい。

App_Codeフォルダーについて

Visual Studioなどで作れるASP.NETでのソースやWebサイト用のフォルダ構成で登場する「App_Code」フォルダーですが、簡単に言うならば「Webページとセットでない、単体のC#VB.NETのソースファイルを置くところ」です。通常のASP.NETプロジェクトでのソースは、拡張子が「ASPX」のファイルと、それの対となる「ASPX.CS」や「ASPX.VB」のファイルがペアで作成されます。しかしロジックを作るうえで、データや処理を格納するクラスなどを追加する場合にはASPXファイルはいりません。そこで、App_Codeフォルダーにそうした「単独で作成されたクラスのソースファイル」を置いておくと、サイト内のどこのページからも参照できるクラスとして、実行時にビルドされて利用可能になる。というわけですね。

詳細は下記のページに書いてあります(英語ですが)。

docs.microsoft.com

App_Codeフォルダーに入れられるソースファイルのプログラミング言語ですが、C#VB.NETのどちらかになります。基本的に混在はできませんが、Web.configにサブフォルダー単位で言語指定を行えば不可能ではありません(ただ、開発チームやソースの管理体制上、統一したほうが運営しやすいとおもいます……。余程の理由がなければ片方に寄せたほうがいいでしょう)。

独習ASP.NET Webフォーム 第6版

独習ASP.NET Webフォーム 第6版

C#フレームワーク ASP.NET Core3入門

C#フレームワーク ASP.NET Core3入門

機能追加開発のASP.NETアプリソースが動かない

専門ではないし面倒くさいし環境も整ってないからやりたくないのですが、仕事なので。

現象

既存のASP.NET Webサイトの機能追加で、ソースは開発サーバーから持ってきた物をポイと渡された状態。使ってる.NET Frameworkや使うべきVisual Studioのバージョンも不明な状態で作業開始を命じられたのですが……。とりあえず

  1. ソースをGitLabの管理下に置いて共有可能に。
  2. Visual Studio 2017でWebサイトとしてソースを開いて、ソリューションファイルの配下に置く(ソリューションを名前を付けて保存)。
  3. 使ってる.NET Frameworkを……とりあえず3.5にしてみる→Web.Configに大幅に加筆が行われたので、2.0にしてみると加筆された部分が消えた……ということは.NET Framework 2.0だ(今時!?)。

というところまでやって、念のためWebサイトのビルドも行ってエラーが起きない事を確認。さ、DB接続とか出来ないだろうけれどまずはデバッグ実行してみるか、と思ってF5を押したら……。

f:id:frontline:20201105212705p:plain
ASP.NETのソースを実行すると起きたエラー

アプリケーションレベルを超えて allowDefinition='MachineToApplication'として登録されているセクションを使う事はできません。このエラーは、仮想ディレクトリがIISでアプリケーションとして構成されなかった場合に発生します。

さて、調べますか。

原因

簡単でした。サブフォルダーに別のASP.NETソースが混入してました。フォルダー名がすごく適当だったので、おそらく改修作業か何かの中でお試しでつくったものがそのままになっているのではないかと。で、Web.config等の設定情報やフォルダー構成も全部ダブってるのでVisual Studioがよく分からなくなっていたっぽいです。

ゴミフォルダーを消して、とりあえずこのエラーは消えました。