Не удается получить доступ к моему классу в папке WebMatrix (razor) App_Data

#asp.net #class #razor #webmatrix #app-data

#asp.net #класс #razor #веб — матрица #приложение-данные #webmatrix

Вопрос:

Я перепробовал все решения, которые я нашел в stackoverflow, но, похоже, я не могу получить доступ к классу, который я создал в папке App_Data.

Если у меня есть этот класс (отображается только часть класса):

 public class Encryption
{
    public string Encrypt(string plainText, string Key)
   {
       byte[] key = StringToByteArray(Key);
       string encrypted = ByteArrayToHexString(encryptStringToBytes_AES(plainText, key, null));
       return encrypted;
   }
}
  

Я должен иметь доступ к нему в блоке кода, подобном:

 @{
    Encryption enc = new Encryption();
    var data = enc.Encrypt("hello", "world");
}
  

Но я получаю сообщение об ошибке, что тип или пространство имен «Шифрование» не могут быть найдены.

Я также пытался импортировать его с помощью пространства имен, но, похоже, не удается отобразить имя моего приложения в качестве пространства имен, кажется, проще в asp.net mvc.

Я перепробовал все примеры, которые смог найти для обновления моего файла конфигурации, но безрезультатно. Есть ли что-то, что мне нужно сделать, чего мне здесь не хватает?

Ответ №1:

Я наконец нашел ответ, мне пришлось создать папку App_Code и поместить туда класс, чтобы на него можно было ссылаться.

Я думаю, это потому, что я создал приложение в WebMatrix, а не в VS2010. Итак, имя моего веб-сайта (MyWebsite) не соответствует пространству имен, как название проекта в VS2010. Это означает, что если я помещу класс шифрования в папку с именем Utilities, я не смогу этого сделать:

 @using MyWebsite.Utilities
  

Обратите внимание, что приложение WebMatrix, использующее стартовый сайт, не добавляет папку App_Code автоматически.

Ну, вернемся к кодированию!

Ответ №2:

Классы в App_data не компилируются. Это для SQL CE, экспресс-баз данных и специфичных для приложения данных, а не кода. Создайте другую папку в корне и переместите файл класса туда или поместите его в корень вашего проекта.

Комментарии:

1. Изначально он был у меня в подпапке (Утилиты), и я не мог видеть код. Я где-то читал, что файлы cs должны быть в папке app_data, поэтому я переместил его туда, но все еще не мог его увидеть. Итак, я просто переместил его в корень, и я все еще не могу использовать класс.

2. Вы создали решение (Ctrl Shift B)?