Intereting Posts
Масштабирование System.Drawing.Bitmap до заданного размера при сохранении пропорций AutoMapper 3.1.1 и Entity Framework 6.1 Объекты прокси Как отличается асинхронное программирование от Threads? Безопасный способ вставки динамических значений во внешние файлы JavaScript Экспорт datagridview в файл csv Могу ли я развертывать SQL Server Express с моим настольным приложением, как встроенная firebase database? Entity Framework включает в себя левое соединение, возможно ли это? Где я должен объявить переменную сеанса в asp.net Взаимодействие между WebBrowser Control и Windows Forms В десериализаторе нет сведений о любом типе, который соответствует этому контракту Использование C # для получения списка ACL для серверов и сопоставленных дисков Неправильное событие щелчка кнопки PNG в WPF ASP.NET Core 1.1 работает нормально локально, но при публикации в Azure говорится: «Ошибка при запуске приложения». BitmapSource из файла Как MSBuild решает, нужно ли перестраивать библиотеку C # или нет?

Веб-сайт ASP.NET не может видеть файл .cs в папке App_Code

Таким образом, у меня есть веб-сайт ASP.NET (а не веб-приложение), которое я делаю в VS2010 с C #. Он отлично работает на моей машине, но когда я загружаю его на сайт, на котором он размещен, он не будет компилироваться, давая: «CS0246: Тип или имя пространства имен« DataAccess »не удалось найти (вам не хватает директивы using или ссылка на сборку?) ”

Я использовал функцию копирования веб-сайта в VS и не испытывал никаких проблем, пока не захочу поместить свой собственный class в папку App_Code и использовать его. Я читал в других ответах об изменении свойств .cs на «Компиляция» вместо «Контент», но для меня нет таких параметров в свойствах файла … только «Имя файла», «Полный путь» и «Пользовательский инструмент». Вот код из файла .cs:

using System; using System.Data; using System.Data.SqlClient; using System.Web.Configuration; ///  /// Provides access to SQL Server database. ///  /// public class DataAccess { //Variables & public properties *********************************** private string connectionString = ""; private int recordCount = -1; ///  /// Property: gets count of records retrieved or changed ///  public int Count { get { return recordCount; } } //Class constructor is executed when object is initialized *********** ///  /// Connection string name in web.config file is required to initialize DataAccess ///  /// Name of web.config connection string 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; } ///  /// Executes SELECT statement and returns results in dataTable ///  /// Select SQL statement ///  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; } ///  /// Executes "non-query" SQL statements (insert, update, delete) ///  /// insert, update or delete /// Number of records affected 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 

И с моей страницы:

    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(); }    GridView    

GridView




Спасибо за вашу помощь!

По умолчанию веб-сайты не компилируют файлы .cs. Вам нужно будет сделать несколько разных вещей.

  1. Установите для каждого файла classа «компиляцию» в свойствах этого файла classа. Вы можете увидеть эту опцию, щелкнув файл classа, просмотрев свойства в окне проводника свойств и изменив раскрывающийся список «Построение действия» на «Компиляция».

  2. Если приведенное выше не помогает, удалите class из app_code и поместите его в корневую папку.

У вас есть папка app_code, это корневая папка веб-приложения (не только папка или виртуальная папка). Кажется, что Asp.NET не видит папку app_code.

Параметры Conent и compile доступны только в проекте WebApplication.

Я задал этот вопрос перед запуском учетной записи, иначе я отредактировал бы его.

У меня такая же ошибка после:

  1. Убедитесь, что у меня есть веб-сайт, а не веб-приложение, поэтому нет свойств компиляции / содержимого для файла .cs.

  2. Проверка положения папки App_Code. Я попытался поставить GridView.aspx под root, а также в свою собственную папку, такую ​​же ошибку. \ \ App_Code DataAccess.cs \ App_Data \ GridView GridView.aspx Web.config

  3. Перемещение classа из App_Code в root. Такая же ошибка.

  4. Это последнее, что я думал, будет работать, но этого не произошло. Используется функция публикации веб-сайта для загрузки предварительно скомпилированного кода. Я мог видеть, что это был файл DataAccess.dll в папке bin, и в корневом каталоге был файл PrecompiledApp.config. Такая же ошибка.

UPDATE: он решил: структура папок на сервере была похожа на локальную, но у меня было все в подпапке … App_Code и App_Data должны быть в корне сервера.

Вероятно, вам необходимо скомпилировать приложение перед его развертыванием. На данный момент ASP.NET не знает о файлах .cs, которые не привязаны к файлам .aspx / .ascx. Я бы рекомендовал посмотреть проекты веб-развертывания или использовать опцию «Опубликовать» Visual Studio 2010. Скотт Гатри дает лучшее резюме, чем я когда-либо мог.