そのため、最近、iis7 で作業しているサイトを表示しようとすると、この httpexeption が表示されます。エラーは以下のとおりです。
説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Web.HttpException: コントロールにコード ブロック (つまり <% ... %>) が含まれているため、Controls コレクションを変更できません。
ソース エラー:
現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
スタックトレース:
[HttpException (0x80004005): コントロールにコード ブロック (つまり <% ... %>) が含まれているため、コントロール コレクションを変更できません。]
System.Web.UI.ControlCollection.AddAt(Int32 インデックス、コントロールの子) +8689794 Telerik. Web.UI.RadAjaxControl.MoveUpdatePanel(コントロール イニシエータ、コントロール更新) +132[HttpException (0x80004005): RadCodeBlock 内でコード ブロックをラップし、例外を生成することでエラーが解決するかどうかを確認してください。
] RadAjaxControl.PerformRender() +375
Telerik.Web.UI.RadAjaxControl.OnPageRender(HtmlTextWriter ライター、コントロール ページ) +1222
Telerik.Web.UI.RadAjaxControl.RenderPageInAjaxMode(HtmlTextWriter ライター、コントロール ページ) +95
System.Web.UI.Control .RenderChildrenInternal(HtmlTextWriter ライター、ICollection の子) +256
System.Web.UI.Control.RenderChildren(HtmlTextWriter ライター) +19
System.Web.UI.Page.Render(HtmlTextWriter ライター) +29
System.Web.UI.Adapters.ControlAdapter.Render(HtmlTextWriter ライター) +21 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter ライター、ControlAdapter アダプター) +8703529
System.Web.UI.Control.RenderControl(HtmlTextWriter ライター、ControlAdapter アダプター) ) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter ライター) +25
System.Web.UI.Page.ProcessRequestMain(ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) +1266
この問題について調査を行ったとき、私が見つけたと思われる唯一の実行可能な解決策は、javascript を radcodeblock 内にラップするか、<span runat="server">
. これらの方法の両方を試しましたが、どちらもうまくいかないようです。また、このサイトの以前の開発者によって実装された javascript には、使用しているとわかる限りアイテムが含まれていないため、このエラーが発生する理由について少し混乱しています<%...%>
。
さらに、ページ内のすべてのコントロールをチェックして、問題のある上記の状態が実際に発生していないことを確認しました。言い換えれば、私が知る限り<%...%>
、ページの宣言以外に使用されているコードには場所がありません。すなわち:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LoginPage.aspx.cs" Inherits="Datamart.UI.Reporting.Web.LoginPage" culture="auto" meta:resourcekey="PageResource1" uiculture="auto" ValidateRequest="False" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
それで、私が間違っている可能性があるのは何なのか、または私の問題がどこにあり、何が正確に何であるかを見つけるための次のステップは何だろうと思っていました. エラーが発生していると思われる場所は以下のとおりです。
<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
<script type="text/javascript">
function onTabSelecting(sender, args)
{
if ( args.get_tab().get_pageView())
{
if (args.get_tab().get_pageView().get_id())
{
args.get_tab().set_postBack( false );
}
}
}
function StopPropagation(e)
{
//cancel bubbling
e.cancelBubble = true;
if (e.stopPropagation)
e.stopPropagation();
}
//the following code use radconfirm to mimic the blocking of the execution thread.
//The approach has the following limitations:
//1. It works inly for elements that have *click* method, e.g. links and buttons
//2. It cannot be used in if(!confirm) checks
window.blockConfirm = function(text, mozEvent, oWidth, oHeight, callerObj1, oTitle)
{
var ev = mozEvent ? mozEvent : window.event; //Moz support requires passing the event argument manually
//Cancel the event
ev.cancelBubble = true;
ev.returnValue = false;
if (ev.stopPropagation)
ev.stopPropagation();
if (ev.preventDefault)
ev.preventDefault();
//Determine who is the caller
var callerObj = ev.srcElement ? ev.srcElement : ev.target;
//Call the original radconfirm and pass it all necessary parameters
if (callerObj)
{
//Show the confirm, then when it is closing, if returned value was true, automatically call the caller's click method again.
var callBackFn = function(arg)
{
if (arg)
{
callerObj["onclick"] = "";
if (callerObj.click) callerObj.click(); //Works fine every time in IE, but does not work for links in Moz
else if (callerObj.tagName == "A") //We assume it is a link button!
{
try
{
eval(callerObj.href)
}
catch (e) { }
}
}
}
radconfirm(text, callBackFn, oWidth, oHeight, callerObj, oTitle);
}
return false;
}
function noBack()
{
window.history.forward();
}
noBack();
window.onload = noBack;
window.onpageshow = function(evt)
{
if (evt.persisted) noBack();
}
window.onunload = function()
{
void (0);
}
</script>
</telerik:RadScriptBlock>
これは私のページの本文にありますが、ヘッダーだけでなくページの下部にも移動しようとしましたが、それは他の人にとって可能な解決策であることが判明しましたが、役に立ちませんでした.
どんな助けや提案も大歓迎です。ありがとうございました。