linq to sql Вставка не работает на развернутом сервере (IIS) - PullRequest
1 голос
/ 11 марта 2009

заголовок говорит сам за себя,

db.ExecuteCommand("INSERT INTO tCSVFile(fileName, fileContent, mimetype, timeCreated) VALUES({0}, {1}, {2}, {3})", filename, EncodeTo64(CreateCSVFile(header, rows)), "text/csv", DateTime.Now );

это нормально работает с виртуального сервера, но при вставке iis ничего не происходит.

Также попробовал это ..

 tCSVFile c = new tCSVFile
            {
                fileContent = EncodeTo64(CreateCSVFile(header, rows)),
                fileName = filename,
                mimetype = "text/csv",
                timeCreated = DateTime.Now
            };


 db.tCSVFiles.InsertOnSubmit(c);
 db.SubmitChanges();

снова работает на виртуальном сервере, но на iS не повезло. любая помощь будет принята с благодарностью, так как я посмотрел в Интернете и не нашел ничего полезного. Мои выборки работают нормально и могут выбирать без проблем.

Строка подключения

<add name="db_ac_motors_testConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\db_ac_motors_test.mdf;Integrated Security=True;User Instance=True"
      providerName="System.Data.SqlClient" />

Вставка является вызовом из частичного представления MVC и выполняется через ajax.beginform ()

Ответы [ 3 ]

2 голосов
/ 11 марта 2009

Что делает функция / метод CreateCSVFile()? Если он записывает файлы в файловую систему, похоже, у вас проблема с разрешениями Т.е. анонимный пользователь сайта может не иметь прав на запись.

Просто мысль.

Кев

2 голосов
/ 11 марта 2009

Вы уверены, что база данных подключается правильно. Многие провайдеры настроили его так, что вы не можете присоединить базу данных, используя методологию строки соединения, которую вы использовали. Это первое место, которое вы должны посмотреть. Я думаю, вы получите ошибку, но она может быть поглощена где-то в стеке.

Если вам нужно переместить SQL в экземпляр SQL (не обязательно SQL Express), а не присоединить, это может помочь: http://gregorybeamer.spaces.live.com/blog/cns!B036196EAF9B34A8!630.entry?sa=214268831

0 голосов
/ 11 марта 2009

Наконец, потратив пару часов на поиск какого-то исключения, я сохранил трассировку стека в журнале событий и обнаружил эту ошибку

System.Data.SqlClient.SqlException: Failed to update database "(database directory)" because the database is read-only.

Так что при некоторой рыбалке в интернете это было связано с ограничением прав пользователей.

вот ссылка, если кто-то столкнется с той же проблемой. Я полагаю, что отладочный виртуальный сервер считывает права доступа к папке по-разному, поэтому существует ограничение только при развертывании (IIS немного суетлив, когда речь идет о разрешениях). И я был удивлен, что никаких исключений не было возвращено ... Мне пришлось сделать так много, чтобы получить доступ к трассировке стека, я не хочу даже начинать ... В любом случае, ссылка - просто следуйте инструкциям, и она должна указать в правильном направлении.

http://social.msdn.microsoft.com/forums/en-US/sqldataaccess/thread/2e776fb4-6df9-4a11-96f1-948b8a2f839a/#page:2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...