Archive for the 'ASP.NET / C#' Category


วิธีแก้ไข ASP.NET Error Exception Details: System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.

บันทึกโดย TaTump วันที่ 27 June 2010 | 178 views

ให้เพิ่ม MultipleActiveResultSets=true ใน ConnectionString

ตัวอย่าง

<connectionStrings>
  <add  name="Default"
        connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;Persist Security Info=True;User ID=sa;Password=sa;MultipleActiveResultSets=true"
        providerName="System.Data.SqlClient"/>
</connectionStrings>

ที่มา : http://blog.sb2.fr/post/2008/12/10/There-is-already-an-open-DataReader-associated-with-this-Command-which-must-be-closed-first.aspx

วิธีแก้ไข ASP.NET C# เมื่อ Rename หรือ Delete Folder แล้ว Session Timeout

บันทึกโดย TaTump วันที่ 25 June 2010 | 270 views

นั่งเสียเวลาเป็นชม.ๆ –” มันอะไรกันนักหนาเนี่ย 55+ ไปได้วิธีมาจากเว็บ Narisa และ Greatfriends ได้ความว่า ใน ASP.NET 2.0 ได้เพิ่มสิ่งที่เรียกว่า File Change Notifications (FCN) หรือ Directory Monitoring เพื่อคอยจับ Directory ทุกครั้งที่มีการ Rename หรือ Delete มันจะ Restart Application ดังนั้น Session State ที่เก็บแบบ InProc จะหายไปด้วย (เออเอากับมัน…)

เกริ่นซะยาวมาดูวิธีแก้กันเลยให้ใส่ Code ด้านล่างนี้ ในไฟล์ “Global.asax.cs” ที่ Events Application_Start() และใช้ using System.Reflection ด้วย ซึ่งการทำงานของมันจะปิด Directory Monitoring ทันทีที่ Application เริ่มทำงาน

System.Reflection.PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
object o = p.GetValue(null, null);
System.Reflection.FieldInfo f = o.GetType().GetField("_dirMonSubdirs", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.IgnoreCase);
object monitor = f.GetValue(o);
System.Reflection.MethodInfo m = monitor.GetType().GetMethod("StopMonitoring", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
m.Invoke(monitor, new object[] { });

สำหรับคนที่ยังไม่เคยใช้ Global.asax.cs ขออธิบายนิดนึงครับ

ไฟล์ Global.asax.cs จะมีไฟล์ Global.asax Inherits มาเรียกอีกทีนึง และทั้งสองไฟล์จะต้องอยู่บนสุดของเว็บไซต์เท่านั้นนะจ๊ะ ยิ่งอธิบายยิ่ง”งง” ดาวน์โหลดไปเลยดีกว่าตรงนี้ผมใส่ Code ด้านบนไว้ให้เรียบร้อยแล้วครับ
คลิกที่นี่เพื่อดาวน์โหลด Global.asax และ Global.asax.cs

เมื่อเราใส่ Code เรียบร้อยแล้วหากเกิดกรณี Error ประมาณนี้


Security Exception
Description: The application attempted to perform an  operation not allowed by the security policy.  To grant this  application the required permission please contact your system  administrator or change the application's trust level in the  configuration file.
 Exception Details: System.Security.SecurityException:  Request failed.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

ให้ไปที่ไฟล์ web.config แล้วไปเพิ่มตาม Code ด้านล่าง

<system.web>
<trust level="Full" originUrl=""/>
</system.web>

เป็นอันเสร็จเรียบร้อยครับ

ที่มา :
http://www.narisa.com/forums/index.php?showtopic=27585
http://www.greatfriends.biz/webboards/msg.asp?id=106519

วิธีกำหนดตัวแปรในไฟล์ web.config ของ ASP.NET

บันทึกโดย TaTump วันที่ 17 June 2010 | 187 views

กำหนดตัวแปรในไฟล์ web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
.
.
.
<appSettings>
<add key="cfgWebTitle" value="Memo8.com" />
</appSettings>
</configuration>

วิธีอ่านค่า (C#)

string cfgWebTitle=ConfigurationManager.AppSettings["cfgWebTitle"].ToString();
Response.Write(cfgWebTitle);

เปิดไฟล์ Master Pages ของ ASP.NET ใน Dreamweaver 8 ให้สามารถ Design ได้

บันทึกโดย TaTump วันที่ 12 June 2010 | 195 views

โดย Master Pages ของ ASP.NET นั้นจะเป็นนามสกุล master ซึ่ง Dreamweaver จะไม่รู้จัก ถ้าเรา Open With มาก็จะเป็น Text ไม่สามารถ Design ได้ วิธีที่จะทำให้ Dreamwever รู้จักไฟล์นามสกุล master อีกหนึ่งวิธีก็คือ

  1. ให้เข้าไปที่ C:\Program Files\Macromedia\Dreamweaver 8\Configuration\DocumentTypes ถ้าเป็น Windows 64 bit ก็เปลี่ยนชื่อ Program Files ไปเป็น Program Files (x86)
  2. หาไฟล์ชื่อ MMDocumentTypes.xml เปิดด้วยโปรแกรม text editor เพื่อแก้ไขไฟล์
  3. เมื่อเปิดมาแล้วให้ค้นหา “ASP.NET_VB” และ “ASP.NET_CSharp”
  4. หา attribute ที่ชื่อว่า “winfileextension” สังเกตุจะบรรจุค่าไว้ aspx,ascx,asmx ให้เราเพิ่ม master เข้าไป ดังนั้นจะได้เป็น winfileextension=”aspx,ascx,asmx,master”
  5. ปิด Dreamweaver แล้วเปิดใหม่ครับ เสร็จเรียบร้อยครับ

“ไม่แน่ใจว่าเวอร์ชั่นอื่นจะแก้ด้วยวิธีนี้รึเปล่านะครับ แต่ผมคิดว่าพาธ config คงไม่ต่างกันมาก”

วิธีแก้ไข ASP.NET Error : The SELECT permission was denied on the object ‘table_name’, database ‘table_name’, schema ‘dbo’.

บันทึกโดย TaTump วันที่ 10 June 2010 | 136 views

จาก Error ตามหัวข้อเกิดจากไม่ได้ Add Permission (เพิ่งเคยเจอเหมือนกัน อุอุ) สามารถแก้ไขได้ดังนี้

  1. เปิดโปรแกรม SQL Server Management Studio
  2. ดูที่ Object Explorer (ด้านซ้าย)
  3. เลือกโฟลเดอร์ >> Security >> Logins
  4. เลือก User ที่ใช้งานอยู่ คลิกขวาเลือกเมนูลัด “Properties”
  5. เมื่อขึ้นหน้าต่าง ดูที่ Select a page (ด้านซ้าย)
  6. เลือก Server Role ให้ Check “sysadmin” กดปุ่ม Ok

เป็นอีกหนึ่งวิธีที่แก้ไข้ได้ครับ เรียบร้อยโรงเรียนไทย

ติดตั้ง IIS ไม่ได้ เพราะหาไฟล์ staxmem.dl_ ไม่เจอ

บันทึกโดย TaTump วันที่ 30 June 2008 | 768 views

ไม่ไ้ด้ติดตั้ง IIS มานานมาก พอมาติดตั้งกะไว้เขียน ASP.NET ก็เจอปัญหาตามหัวข้อ อะไรวะเนี่ย  Windows Pack2 เอากรุอีกแล้ว T_T ฮือ… เลยไปเจอวิธีแก้ไขจากเว็บ  Support ของ microsoft โดยเป็น command prompt ซ่อมแซม Database Utility ที่มีปัญหา แต่ถ้าอยากรู้ละเอียดกว่านี้ก็แปลเอาเองละกันเด้อ ผมก็มีปัญญามั่วแค่นี้แหล่ะเหอๆ แต่ได้ผล วิธีการดังนี้จ่ะ

1. คลิก Start Menu >> Run >> พิมพ์ cmd
2. ให้พิมพ์คำสั่งตามด้านล่างนี้ แล้วเคาะ Enter

esentutl /p %windir%\security\database\secedit.sdb

3. จะมีหน้าต่าง warningขึ้นมาให้กดปุ่ม OK
4. จากนั้นรอจนกว่าระบบจะ “Repair” เสร็จ

“ทีนี้ลองกลับไปติดตั้ง IIS ใหม่อีกครั้งครับ น่าจะได้แล้วล่ะ”

ที่มา : http://support.microsoft.com/kb/555268