2012-11-05 35 views
2

這是在我意識到Calender控件存在之前所做的代碼。並且請不要介意錯字[canlender]!此特定ASPX文件上的IIS服務器錯誤

不知何故,此代碼正在使整個IIS [服務不可用]的狀態。做網絡停止w3svc /網絡啓動w3svc將無法工作。主機提供商說[你做了什麼?]。在我的電腦上(Win8上的IIS)也會凍結。

我沒有發現任何會導致服務器無法服務的問題。這只是創建和修改控制...任何關於這個問題的原因的想法?

謝謝。

calender.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class member_Default : System.Web.UI.Page { 
protected void Page_Load(object sender, EventArgs e) { 
    int currday = 1; 
    int len = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month); 
    switch (new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).DayOfWeek) { 
     case DayOfWeek.Sunday: currday = 1; break; 
     case DayOfWeek.Monday: currday = 0; break; 
     case DayOfWeek.Tuesday: currday = -1; break; 
     case DayOfWeek.Wednesday: currday = -2; break; 
     case DayOfWeek.Thursday: currday = -3; break; 
     case DayOfWeek.Friday: currday = -4; break; 
     case DayOfWeek.Saturday: currday = -5; break; 
    } 
    TableRow tr = new TableRow(); 
    TableHeaderCell tst; 
    tst = new TableHeaderCell(); tst.CssClass = "single_day"; tst.Text = "Sun"; tr.Controls.Add(tst); 
    tst = new TableHeaderCell(); tst.CssClass = "single_day"; tst.Text = "Mon"; tr.Controls.Add(tst); 
    tst = new TableHeaderCell(); tst.CssClass = "single_day"; tst.Text = "Tue"; tr.Controls.Add(tst); 
    tst = new TableHeaderCell(); tst.CssClass = "single_day"; tst.Text = "Wed"; tr.Controls.Add(tst); 
    tst = new TableHeaderCell(); tst.CssClass = "single_day"; tst.Text = "Thu"; tr.Controls.Add(tst); 
    tst = new TableHeaderCell(); tst.CssClass = "single_day"; tst.Text = "Fri"; tr.Controls.Add(tst); 
    tst = new TableHeaderCell(); tst.CssClass = "single_day"; tst.Text = "Sat"; tr.Controls.Add(tst); 
    tblCanlender.Controls.Add(tr); 
    int a=0; 
    while (currday <= len && a++<50) 
    { 
     tr=new TableRow(); 
     for (int i = 0; i < 7; i++) { 
      TableCell tc = new TableCell(); 
      if (currday >= 1 && currday <= len) { 
       tc.CssClass = "single_day_body"; 
       tc.Text = currday.ToString(); 
       tc.Controls.Add(tc); 
       LinkButton lnk = new LinkButton(); 
       lnk.Text = "Add"; 
       tc.Controls.Add(lnk); 
      } 
      tr.Controls.Add(tc); 
      currday++; 
     } 
     tblCanlender.Controls.Add(tr); 
    } 
} 
} 

calender.aspx

<%@ Page Language="C#" EnableViewState ="false" AutoEventWireup="true" CodeFile="calender.aspx.cs" Inherits="member_Default" %> 

<style type="text/css"> 
    .single_day{ 
      width:80px; 
      height:40px; 
      background:#DDD; 
    } 
    .single_day_body{ 
      width:80px; 
      height:80px; 
      text-align:left; 
      vertical-align:top; 
      background:#FFF; 
    } 
    table, th, tr, td, thead, tbody { 
     border: 0; 
     margin: 0; 
     padding: 0; 
    } 
    a.insertdate, a.insertdate:visited, a.insertdate:link { 
     color:gray; 
     text-decoration:none; 
    } 
    a.insertdate:hover { 
     color:#DDD; 
    } 
</style> 
<asp:Table runat="server" id="tblCanlender" style="width:100%;border:1px solid gray;background:#EEE"></asp:table> 

回答

1
tc.Controls.Add(tc); 

你確定這是故意的嗎?它似乎是一個循環參考。

+0

看起來像IIS這次產生了正確的錯誤。謝謝! ......但是在做這個引用之後,IIS被凍結的奇怪......它可以被認爲是服務器軟件的一個bug嗎? – Soreepeong

+0

我想你可以認爲它是一個錯誤,但是我不希望iis以不同的方式處理這種情況。這可能會導致堆棧溢出,因爲每次創建var TC的html時,解析器都將繼續其子元素TC。這不能永遠持續下去:) – Kristof

+0

是啊...我喜歡如果ASP.net會顯示堆棧溢出錯誤。感謝您的建議! – Soreepeong

相關問題