2010-10-27 8 views
14

तो मेरे पास एक एएसपी.नेट वेबसाइट है (वेब ​​एप्लिकेशन नहीं) मैं वीएस -2010 में सी # के साथ बना रहा हूं। यह मेरी मशीन पर ठीक चल रहा है, लेकिन जब मैं इसे साइट पर अपलोड करता हूं, तो यह संकलित नहीं होगा, "CS0246: टाइप या नेमस्पेस नाम 'डेटाएप' नहीं मिला (क्या आप निर्देश का उपयोग कर रहे हैं या एक विधानसभा संदर्भ?) "एएसपी.नेट वेब साइट App_Code फ़ोल्डर में .cs फ़ाइल नहीं देख सकता

मैं वी.एस. में प्रतिलिपि वेब साइट सुविधा का उपयोग कर रहा है और कोई समस्या नहीं थी जब तक मैं App_Code फ़ोल्डर में अपने ही वर्ग डाल दिया और इसका इस्तेमाल करना चाहता था। मैंने .cs गुणों को "सामग्री" के बजाय "संकलित" करने के बारे में अन्य उत्तरों में पढ़ा है, लेकिन फ़ाइल के गुणों में मेरे लिए ऐसा कोई विकल्प नहीं है ... केवल फ़ाइल का नाम, पूर्ण पथ और कस्टम टूल। यहाँ .cs फ़ाइल से कोड है:

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Web.Configuration; 

/// <summary> 
/// Provides access to SQL Server database. 
/// </summary> 
/// 
public class DataAccess 
{ 
    //Variables & public properties *********************************** 
    private string connectionString = ""; 
    private int recordCount = -1; 

    /// <summary> 
    /// Property: gets count of records retrieved or changed 
    /// </summary> 
    public int Count 
    { 
     get 
     { 
      return recordCount; 
     } 
    } 

    //Class constructor is executed when object is initialized *********** 
    /// <summary> 
    /// Connection string name in web.config file is required to initialize DataAccess 
    /// </summary> 
    /// <param name="ConnectionName">Name of web.config connection string</param> 
    public DataAccess(string ConnectionName) 
    { 
     if (WebConfigurationManager.ConnectionStrings[ConnectionName] == null) { 
      throw new Exception("Cannot find connection string named '" + 
       ConnectionName + "' in web.config"); 
     } 
     //Get connection string from web.config. 
     connectionString = WebConfigurationManager.ConnectionStrings[ConnectionName].ConnectionString; 
    } 
    /// <summary> 
    /// Executes SELECT statement and returns results in dataTable 
    /// </summary> 
    /// <param name="SQL">Select SQL statement</param> 
    /// <returns></returns> 
    public DataTable FillDataTable(string SQL) 
    { 
     SqlConnection _objConn = new SqlConnection(connectionString); 
     SqlDataAdapter objAdapter = new SqlDataAdapter(SQL, _objConn); 
     DataTable dt = new DataTable(); 
     try { 
      objAdapter.Fill(dt); 
     } 
     catch (SqlException ex) { 
      throw new Exception("Error in SQL:" + SQL, ex); 
     } 
     catch (Exception ex) { 
      throw ex; //Bubbling exception up to parent class 
     } 
     finally { 
      _objConn.Close(); 
     } 

     recordCount = dt.Rows.Count; 
     return dt; 
    } 

    /// <summary> 
    /// Executes "non-query" SQL statements (insert, update, delete) 
    /// </summary> 
    /// <param name="SQL">insert, update or delete</param> 
    /// <returns>Number of records affected</returns> 
    public int ExecuteNonQuery(string SQL) 
    { 
     SqlConnection _objConn = new SqlConnection(connectionString); 
     try { 
      _objConn.Open(); 
      SqlCommand objCmd = new SqlCommand(SQL, _objConn); 
      recordCount = objCmd.ExecuteNonQuery(); 
     } 
     catch (SqlException ex) { 
      throw new Exception("Error in SQL:" + SQL, ex); 
     } 
     catch (Exception ex) { 
      throw new Exception(ex.Message); //Rethrowing exception up to parent class 
     } 
     finally { _objConn.Close(); } 

     return recordCount; 
    } 

    public int ExecuteScalar(String SQL) 
    { 
     SqlConnection _objConn = new SqlConnection(connectionString); 
     int intID; 
     try { 
      _objConn.Open(); 
      SqlCommand objCmd = new SqlCommand(SQL, _objConn); 
      intID = Convert.ToInt32(objCmd.ExecuteScalar()); 
     } 
     catch (SqlException ex) { 
      throw new Exception("Error in SQL:" + SQL, ex); 
     } 
     catch (Exception ex) { 
      throw new Exception(ex.Message); //Rethrowing exception up to parent class 
     } 
     finally { _objConn.Close(); } 
     return intID; 
    } 

}//end class 

और मेरे पेज से:

<%@ Page Language="C#" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<script runat="server"> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Initialize dataAccess class 
    DataAccess myDA = new DataAccess("A05Customers"); 

    //Populate dataTable and bind to GridView Control 
    string strSQL = "Select * from tblCustomers"; 

    gvCustomers.DataSource = myDA.FillDataTable(strSQL); 
    gvCustomers.DataBind(); 
} 
</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>GridView</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div align="center" style="font-family: Verdana"> 
    <h2>GridView</h2> 
    <hr style="color: #0000FF" width="800" /> 
    <br /> 
    <asp:GridView ID="gvCustomers" runat="server" BackColor="#FFFFCC" BorderColor="#336699" BorderStyle="Inset" BorderWidth="5px" CellPadding="2" CellSpacing="4" /> 
    <br /> 
</div> 
    </form> 
</body> 
</html> 

आपकी मदद के लिए धन्यवाद!

+0

यह पहले पूछे जाने वाले प्रश्न देखें। यह एक सामान्य प्रश्न है। http://stackoverflow.com/questions/89570/app-code-folder-issues – David

उत्तर

0

आपको इसे तैनात करने से पहले अपने आवेदन को संकलित करने की आवश्यकता है। फिलहाल एएसपी.नेट के पास .cs फ़ाइलों के बारे में जानने का कोई तरीका नहीं है जो .aspx/.ascx फ़ाइलों से जुड़े नहीं हैं। मैं वेब परिनियोजन परियोजनाओं को देखने या विजुअल स्टूडियो 2010 "प्रकाशन" विकल्प का उपयोग करने की सलाह दूंगा। स्कॉट गुथरी मैं कभी भी here से बेहतर सारांश देता हूं।

+0

वैकल्पिक रूप से वह अपने web.config को फिर से सहेजने का प्रयास कर सकता है – jcolebrand

+0

वह एप्लिकेशन को फिर से शुरू करेगा, लेकिन .cs फ़ाइल को "App_Code" में पुन: प्रारंभ करेगा फ़ोल्डर अभी भी संकलित नहीं किया जाएगा। – nizmow

5

आप app_code फ़ोल्डर है यह वेब एप्लिकेशन के रूट फ़ोल्डर (न केवल फ़ोल्डर या आभासी फ़ोल्डर)। ऐसा लगता है कि Asp.NET app_code फ़ोल्डर नहीं देख सकता है।

कॉन्टेंट और संकलन विकल्प केवल वेब अनुप्रयोग प्रोजेक्ट में उपलब्ध हैं।

20

डिफ़ॉल्ट वेबसाइटों द्वारा .cs फ़ाइलों को संकलित नहीं करते हैं। आपको कुछ अलग-अलग चीजें करने की आवश्यकता होगी।

  1. प्रत्येक कक्षा फ़ाइल को उस वर्ग फ़ाइल के गुणों में "संकलित" करने के लिए सेट करें। आप क्लास फ़ाइल पर क्लिक करके, गुण एक्सप्लोरर विंडो में गुणों को देखकर और बिल्ड एक्शन ड्रॉपडाउन सूची को "संकलित" में बदलकर यह विकल्प देख सकते हैं।

  2. यदि उपरोक्त मदद नहीं करता है, app_code से वर्ग को हटाने और रूट फ़ोल्डर में छोड़ें।

+0

क्या किसी को पता है कि क्यों कुछ सीएस फाइलों को ऐसा करने की ज़रूरत है और दूसरों को नहीं? मुझे एक फ़ाइल के साथ ओपी के समान समस्या थी जिसे मैंने वीएस2012 के माध्यम से एक वेबमैट्रिक्स प्रोजेक्ट में जोड़ा था। उस फ़ाइल में कक्षाएं तब तक नहीं मिली जब तक कि मैं आपके सुझाव के रूप में फ़ाइल ("सामग्री थी) को फ़ाइल के" बिल्ड एक्शन "सेट करता हूं (इसके लिए धन्यवाद)। हालांकि, App_Code निर्देशिका में अन्य 3 फ़ाइलों को "सामग्री" पर सेट किया गया था और उनकी कक्षाएं सुलभ थीं। कहीं कॉन्फ़िगरेशन फ़ाइल होना चाहिए जो अंतर या कुछ बनाता है? –

+2

मुझे पता चला कि आपको एप_Cोड फ़ोल्डर में सबकुछ बदलना है> बिल्ड एक्शन> कंपाइल, फिर ओबीजे फ़ोल्डर की सभी फाइलों को हटाकर एक क्लीन सॉल्यूशन करें, फिर एक्शन> कोई नहीं बनाएं (यह वैकल्पिक है)। मैंने पाया कि पुराने कैश संदर्भ "obj" में रहते हैं यदि आपके पास App_Data फ़ोल्डर में * .cs फ़ाइलें हैं, और संकलन सफल नहीं था। – MacGyver

+0

DesignTimeResolveAssemblyReferencesInput.cache वह फ़ाइल है जो "obj" फ़ोल्डर में लटकती है। इसे हटाएं। – MacGyver

1

मैंने खाता शुरू करने से पहले इस प्रश्न से पूछा, अन्यथा मैं इसे संपादित कर दूंगा। जांच की जा रही है कि मैं एक वेब साइट है, न कि वेब अनुप्रयोग है, इस प्रकार कोई संकलित/.cs फ़ाइल के लिए सामग्री गुण होते हैं

  1. :

    मैं के बाद एक ही गलती की है।

  2. App_Code फ़ोल्डर की स्थिति की जांच। मैंने रूट के साथ-साथ अपने फ़ोल्डर में, एक ही त्रुटि में GridView.aspx डालने का प्रयास किया। \ \ App_Code DataAccess.cs \ App_Data \ GridView GridView.aspx Web.config

  3. जड़ तक App_Code से कक्षा ले जाना। वही त्रुटि

  4. यह पिछले मैंने सोचा था कि काम करेगा, लेकिन ऐसा नहीं किया।प्रीकंपील्ड कोड अपलोड करने के लिए प्रकाशित वेब साइट सुविधा का उपयोग किया गया। मैं देख सकता था कि यह अब bin फ़ोल्डर में DataAccess.dll था, और रूट में एक precompiledApp.config फ़ाइल थी। वही त्रुटि

अद्यतन: इसे हल: सर्वर पर फ़ोल्डर संरचना स्थानीय एक, लेकिन मैं एक सबफ़ोल्डर में सब कुछ था की तरह था ... App_Code और App_Data सर्वर के रूट में होना चाहिए।

+0

आपने मेरा दिन बचाया। मुझे इस प्राचीन विरासत में कुछ बदलाव करना पड़ा। मेरे पास App_code बिल्कुल रूट के नीचे नहीं बल्कि एक स्तर नीचे था। तो मैंने इसे बंद कर दिया और फ़ोल्डर खोला जैसे कि App_code रूट के नीचे सही होगा ... और कोई त्रुटि नहीं थी। अंत में अद्यतन डालने के लिए धन्यवाद। यह मेरी मदद की। – shazia

संबंधित मुद्दे