Default.aspx.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. using System.Web;
  6. using System.Web.Compilation;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. public partial class _Default : System.Web.UI.Page
  10. {
  11. protected void Page_Load (object sender, EventArgs e)
  12. {
  13. List<string> messages = new List<string> ();
  14. AppDomain ad = AppDomain.CurrentDomain;
  15. try {
  16. RunTest ("myFile.cache", "1", messages);
  17. // Subdirs not allowed
  18. RunTest ("subdir/myFile.cache", "2", messages);
  19. // File doesn't exist
  20. RunTest ("myAnotherFile.cache", "3", messages, true);
  21. //
  22. RunTest (null, "4", messages);
  23. RunTest (String.Empty, "5", messages);
  24. var sb = new StringBuilder ();
  25. foreach (string s in messages)
  26. sb.AppendLine (s);
  27. log.InnerText = sb.ToString ();
  28. } finally {
  29. ad.SetData ("TestRunData", messages);
  30. }
  31. }
  32. void Log (List<string> messages, string format, params object [] parms)
  33. {
  34. if (parms == null || parms.Length == 0)
  35. messages.Add (format);
  36. else
  37. messages.Add (String.Format (format, parms));
  38. }
  39. void RunTest (string fileName, string logTag, List <string> messages, bool noCreate = false)
  40. {
  41. string codeGenDir = null;
  42. if (!noCreate) {
  43. try {
  44. codeGenCreate.InnerText = codeGenDir = HttpRuntime.CodegenDir;
  45. Log (messages, "create[{0}]: codeGen", logTag);
  46. } catch (Exception ex) {
  47. Log (messages, "create[{0}]: error codeGen ({1})", logTag, ex.GetType ());
  48. }
  49. try {
  50. using (FileStream st = BuildManager.CreateCachedFile (fileName) as FileStream) {
  51. if (st != null) {
  52. string path = st.Name;
  53. Log (messages, "create[{0}]: fileStream", logTag);
  54. filePathCreate.InnerText = path;
  55. Log (messages, "create[{0}]: can{1} read", logTag, st.CanRead ? String.Empty : "not");
  56. Log (messages, "create[{0}]: can{1} write", logTag, st.CanWrite ? String.Empty : "not");
  57. if (codeGenDir != null && path.StartsWith (codeGenDir))
  58. Log (messages, "create[{0}]: pathSubdirOfCodeGen", logTag);
  59. if (Path.GetFileName (path) == fileName)
  60. Log (messages, "create[{0}]: our file name", logTag);
  61. using (var sw = new StreamWriter (st)) {
  62. sw.Write ("test");
  63. }
  64. } else
  65. Log (messages, "create[{0}]: stream is null", logTag);
  66. }
  67. } catch (Exception ex) {
  68. Log (messages, "create[{0}]: error write ({1})", logTag, ex.GetType ());
  69. }
  70. }
  71. try {
  72. codeGenRead.InnerText = codeGenDir = HttpRuntime.CodegenDir;
  73. Log (messages, "read[{0}]: codeGen", logTag);
  74. } catch (Exception ex) {
  75. Log (messages, "read[{0}]: error codeGen ({1})", logTag, ex.GetType ());
  76. }
  77. try {
  78. using (FileStream st = BuildManager.ReadCachedFile (fileName) as FileStream) {
  79. if (st != null) {
  80. string path = st.Name;
  81. Log (messages, "read[{0}]: fileStream", logTag);
  82. filePathRead.InnerText = path;
  83. Log (messages, "read[{0}]: can{1} read", logTag, st.CanRead ? String.Empty : "not");
  84. Log (messages, "read[{0}]: can{1} write", logTag, st.CanWrite ? String.Empty : "not");
  85. if (codeGenDir != null && path.StartsWith (codeGenDir))
  86. Log (messages, "read[{0}]: pathSubdirOfCodeGen", logTag);
  87. if (Path.GetFileName (path) == fileName)
  88. Log (messages, "read[{0}]: our file name", logTag);
  89. string contents;
  90. using (var sr = new StreamReader (st)) {
  91. contents = sr.ReadToEnd ();
  92. }
  93. if (contents != null && contents == "test")
  94. Log (messages, "read[{0}]: contents ok", logTag);
  95. } else
  96. Log (messages, "read[{0}]: stream is null", logTag);
  97. }
  98. } catch (Exception ex) {
  99. Log (messages, "read[{0}]: error read ({1})", logTag, ex.GetType ());
  100. }
  101. }
  102. }