달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

이 망할 오류때문에 몇일을 고생한건지....

나에게 발생한 오류는 위와 같은 오류였다.


구글 검색을 통해

http://antonperez.com/2012/02/09/cannot-add-duplicate-collection-entry-of-type-error-in-iis-77-5/ 를 찾아냈고

defaultappPool.config 를 수정하라는 내용대로 수정을 하자 해결이 됐다.

하지만 문제는 IIS가 재시작 될때마다 해당 내용은 다시 써지고 반복이라는 것...


여러가지를 찾아보던 중 근본적인 config파일을 수정해야 될것 같다라는 생각에 설정을 찾다가 발견..

C:\Windows\System32\inetsrv\config\applicationHost.config 라는 파일이 있다.

이 파일에도 동일한 내용이 있으므로 여기서 수정을 하면 된다..


우선 해당 파일은 관리자 계정이 아니면 권한이 없다고 접근 금지가 되므로 파일을 다른곳에 복사 한 후 수정해서 다시 덮어쓰기 하면 된다.


내용은 <isapiFilters> 로 검색하면 

<isapiFilters>

            <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />

            <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />

            <filter name="ASP.Net_2.0_for_V1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />

            <filter name="ASP.Net_4.0_64bit" path="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness64" />

            <filter name="ASP.Net_4.0_32bit" path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness32" />

        </isapiFilters>


 라는 내용과

<location path="Default Web Site">

        <system.webServer>

            <isapiFilters>

<filter name="ASP.Net_4.0_64bit" path="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness64" />

            <filter name="ASP.Net_4.0_32bit" path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv4.0,bitness32" />

            </isapiFilters>

        </system.webServer>

    </location>


라는 내용이 나온다..

이중 두번째 내용을 삭제하여


<location path="Default Web Site">

        <system.webServer>

            <isapiFilters>

            </isapiFilters>

        </system.webServer>

    </location>


이렇게 변경하고 IIS 를 재시작 하면 해결 된다.



'프로그래밍 > ASP.NET' 카테고리의 다른 글

[ASP.NET] 게시판 페이징  (0) 2010.09.17
Posted by SadDev
|

오랫만에 개발 관련 글을 적는것 같다 ㅡㅡ;;

최근에 GridView의  Pager 를 사용해 보다가. 왠지 custom도 짜증나고해서 간단한 페이징 기능을 구현했다.
아직 좀더 손봐야 되지만 우선 기본적인 부분 까지만 정리한걸 올려본다.

<asp:GridView ID="GVMember" runat="server" AutoGenerateColumns="true"
     onrowdatabound="GVMember_RowDataBound">
    </asp:GridView>
<p></p>
  <asp:Button ID="btnPrev" runat="server" Text="Prev" OnClick="btnPrev_Clicked"  Visible="false" />
 <asp:DropDownList ID="ddlPages" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlPages_SelectedIndexChanged"></asp:DropDownList> / <asp:Label ID="lblTotal" runat="server"></asp:Label>
 <asp:Button ID="btnNext" runat="server" Text="Next" OnClick="btnNext_Clicked"  Visible="false" />

GridView 는 그냥 그대로 놔두고
버튼 (이전 페이지, 다음페이지)와 드롭다운리스트로 페이지 리스트를 넣었다 (페이지 바로가기)


  static int nPage = 1;     // 현재 페이지 번호
  static int iPage = 30;     // 한페이지에 몇개의 게시물을 보여줄지 결정
  static int iTotal = 0;       // 전체 게시물 수
  static int iTotalPage = 1;  // 전체 페이지 수

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack) ServerDataBind();   // PostBack이 아닐때만  실행
}

public void ServerDataBind()
  {
   conn = db.dbcon("Board");   // DB 커넥션은 개인적으로 함수 만들어서 사용 중

   SqlParameter[] param = new SqlParameter[2];
   param[0] = new SqlParameter("@PAGE", SqlDbType.Int);
   param[1] = new SqlParameter("@TOTAL", SqlDbType.Int);

   param[0].Value = nPage;
   param[1].Direction = ParameterDirection.Output;
   
   ds = SqlHelper.ExecuteDataset(conn, CommandType.StoredProcedure, "dbo.BOARD_GET_LIST", param);   // SQLHelper 사용중

   iTotal = Convert.ToInt32(param[1].Value);

   GVMember.DataSource = ds.Tables[0];
   GVMember.DataBind();
 
   conn.Close();

   iTotalPage = (iTotal / iPage) + 1;   // 전체 페이지 수는 (전체게시물 /페이지당 표시 수) + 1
   SetPaging();
  }

private void SetPaging()
  {
   lblTotal.Text = iTotalPage.ToString();   // 전체 페이지 수를 라펠에 표시
   ddlPages.Items.Clear();  // 드롭다운리스트의 아이템 클리어

   for (int i = 0; i < iTotalPage; i++)
   {
    int tmp = i + 1;
    ListItem li = new ListItem(tmp.ToString());

    if (nPage == tmp) li.Selected = true;    // 현재 페이지 번호와 일치하면 selected
    else li.Selected = false;

    ddlPages.Items.Add(li);
   }

   if (nPage > 1)   // 현재 페이지가 1페이지면 이전 페이지 버튼 안보임
   {
    btnPrev.Visible = true;
    btnPrev.Text = (nPage - 1).ToString();  
   }
   else btnPrev.Visible = false;

   if (nPage < iTotalPage)   // 현재 페이지가 끝페이지면 다음 페이지 버튼 안보임
   {
    btnNext.Visible = true;
    btnNext.Text = (nPage + 1).ToString();
   }
   else btnNext.Visible = false;
  }


protected void GVMember_RowDataBound(object sender, GridViewRowEventArgs e)   // 데이터 바운드 할때 padding 조금 넣어놨음
  {
   for (int i = 0; i < e.Row.Cells.Count; i++)
    e.Row.Cells[i].Style.Add("padding", "5px");   
  }

protected void btnNext_Clicked(object sender, EventArgs e)
  {
    nPage++;
    
    ServerDataBind();
   
  }

  protected void btnPrev_Clicked(object sender, EventArgs e)
  {
   if (nPage > 1)
   {
    nPage--;
    ServerDataBind();
   }
  }

protected void ddlPages_SelectedIndexChanged(object sender, EventArgs e)
  { 
   nPage = ddlPages.SelectedIndex + 1;
   ServerDataBind();
  }


===============================================
프로시져

CREATE PROCEDURE [dbo].[BOARD_GET_LIST]
 @PAGE Int
 ,@TOTAL  Int OUTPUT
AS
BEGIN
 SELECT @TOTAL = COUNT(*) FROM BOARD_TABLE
 
  SELECT * FROM
  (
   SELECT TOP(30) * FROM
   (
    SELECT TOP (@PAGE * 30) * FROM MEMBER ORDER BY RegDate DESC
   ) A ORDER BY A.RegDate ASC
  ) B  ORDER BY B.Regdate DESC 
END
=============================================================

아래와 같은 형식으로 페이지를 표시한다..

전체  994페이지 중 현재 197페이지이며   앞페이지와 다음 페이지 번호를 버튼에 사용 중





이제 1,2,3,4,5,6,7,8,9,10  과 같이 페이지를 표시하는 기능만 추가하면 되는데...
천천히 해야 겠다..
Posted by SadDev
|