fc2ブログ

記事一覧

'__o'は宣言されていません。アクセスできない保護レベルになっています。 | asp.net


今回は asp.net において以下のようなエラーが発生することがありますので、その対応方法についてご紹介いたします。

エラー内容:
'__o'は宣言されていません。アクセスできない保護レベルになっています。

このエラーについて、再現方法とその対応方法について検証してみました。


aspnet_ocouldnotaccess_01.png
 


前提条件
・Windows 7 Professional 以降 / Windows Server 2008 R2 以降
・Visual Studio 2010 Professional 以降
・VB.NET
・.Net Framework 4.0 以降



1.再現コード

以下のように Body 内部に If 文で分岐させたタグの内部に VB コードを埋め込みます。たったこれだけのコードで再現が可能です。
また、VisualStudio のバージョンにより若干エラーに対する挙動が異なるようですので、注意が必要です。
・VisualStudio 2013 ではエラーで実行できません。
・VisualStudio 2015 だとエラーにはなりますが、実行は可能です。

<body>
<form id="form1" runat="server">
<div>
<% If True Then %>
<a href="<%= Me.ResolveClientUrl("~/index1.aspx") %>" />
<% Else %>
<a href="<%= Me.ResolveClientUrl("~/index2.aspx") %>" />
<% End If %>
</div>
</form>
</body>



2.原因

__o とは内部的に宣言されているオブジェクトで、If 文で分岐されているとその内部に VB コードを記述しても __o が内部的に宣言されないことが原因で発生します。



3.対応方法

そこで、以下のように  <% ="" %> を If 文の前に記載します。これにより内部的に __o が宣言され、If 文で分岐されていても VB コードが動作するようになります。
<body>
<form id="form1" runat="server">
<div>
<%= "" %>
<% If True Then %>
<a href="<%= Me.ResolveClientUrl("~/index1.aspx") %>" />
<% Else %>
<a href="<%= Me.ResolveClientUrl("~/index2.aspx") %>" />
<% End If %>
</div>
</form>
</body>





最後までお読みいただきありがとうございます。
いかがでしたでしょうか。他にも asp.net に関連する記事を投稿しておりますのでよろしければご参考くださいませ。


関連記事

コメント

コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

 入力されていないコメントには返信しませんのであらかじめご了承くださいませ。

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Catalina 10.15 / Mojave 10.14 / High Sierra 10.13 / Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
【データベース】
Oracle 10g/9i
SQLServer 2016/2008R2/2005/2000
SQLAnywhere 16/11/8
【BI/レポートツール】
Cognos ReportNet (IBM)
Microsoft PowerBI
ActiveReport (GrapeCity)
CrystalReport
【OCX関連】
GrapeCity InputMan SPREAD MultiRow GridView
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS jQuery IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。