アプリケーションのクライアント側でjQuery を使用して AJAX 呼び出しを有効にするために、次のような ASP.NET ページにいくつかのWeb メソッドを追加しました。
public partial class MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Page load logic...
}
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public static string MyWebMethod()
{
// web method logic...
}
}
ただし、デバッガーを使用して、Web メソッドが ASP.NET ページの AppDomain とは異なるAppDomainで処理されていることに気付きました。そのため、それぞれに独自の静的変数セットがあり、問題が発生しています。
したがって、WebMethods (または Web サービス) と ASP.NET アプリを同じ AppDomain でホストして、両方が同じ静的変数セットにアクセスできるようにすることができるかどうかを知りたいですか?
前もって感謝します!
編集1
IIS 7.0 でアプリをホストしています
編集2
Jupaol の回答は、同じ appDomain で WebMethods と ASP.NET ページをホストできることを明確に示していますが、さらにテストを実行した後に見つけたものは次のとおりです。
jQuery.ajax 呼び出しで URL が次のように設定されている場合:
$.ajax({
url: "/MyFolder/MyPage.aspx/MyWebMethod",
contentType: "application/json; charset=utf-8",
success: AjaxSuccess,
error: AjaxError
});
IIS は、私の Web サイト (同じWeb サイト キー) に2 つの appDomains を作成します。1つはページ要求用で、もう 1 つは WebMethod 要求用です。それらのFriendlyNameを以下に示します。
- "/LM/W3SVC/1/ROOT-6-129872125368848248" (Web メソッド)
- "/LM/W3SVC/1/ROOT/WebApp-5-129872125273487796" (ASP.NET ページ要求)
ただし、jQuery.ajax 呼び出し URL が次のように設定されている場合:
$.ajax({
url: "MyPage.aspx/MyWebMethod",
contentType: "application/json; charset=utf-8",
success: AjaxSuccess,
error: AjaxError
});
両方のリクエストに対応するために作成される appDomain は 1 つだけです。
- "/LM/W3SVC/1/ROOT/WebApp-7-129872126989518526"
残念ながら、この動作の説明を見つけることができませんでした。この問題に関連していると考えられる唯一のことは、私の Web サイトでhttpsを使用しているページと使用していないページがあることだけです。