アプリケーションには、CompletePoll.aspx、Default.aspx の 2 つのページがあります。
CompletePoll.aspx --> Page_Load()
Ultoo u = new Ultoo();
u.UserName = Request["username"].ToString();
u.Password = Request["password"].ToString();
new Thread(u.CompletePoll).Start();
CompletePoll()
.......
.......
String str = "Question:" + QuestionGenerator.GetNextQuestion(); /*Here i am getting Type initializer exception*/
.......
.......
QuestionGenerator
public static class QuestionGenerator
{
private static string[] FirstParts = new StreamReader(HttpContext.Current.Server.MapPath("App_Data/QuestionPart1.txt")).ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
private static string[] SecondParts = new StreamReader(HttpContext.Current.Server.MapPath("App_Data/QuestionPart2.txt")).ReadToEnd(). Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
private static Random r = new Random();
public static string GetNextQuestion()
{
return FirstParts[r.Next(0, FirstParts.Length - 1)] + " " + SecondParts[r.Next(0, SecondParts.Length - 1)] + "?";
}
}
しかし、最初に Default.aspx を呼び出してから CompletePoll.aspx を呼び出すと、コードは正常に動作します。
Default.aspx --> Page_Load()
Label1.Text = QuestionGenerator.GetNextQuestion();
したがって、ここで私の問題は、最初に CompletePoll.aspx にアクセスすると、TypeInitializer Exception が発生することです。最初に Default.aspx にアクセスしてから CompletePoll.aspx にアクセスしても、問題は発生しません。私のコードで何が問題なのですか。何か不足していますか? 最初に CompletePoll.aspx にアクセスするにはどうすればよいですか?