2009-03-10 9 views
1

Titel spricht für sich,LINQ to SQL-Einsatzarbeits nicht auf Einsatz-Server (IIS)

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

das funktioniert gut von dem virtuellen Server, sondern auf iis Einfügen bewirkt nichts passieren.

auch versucht, diese ..

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


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

wieder auf virtuellen Server funktioniert, aber iis auf kein Glück. jede Hilfe würde sehr geschätzt werden, da ich im Netz geschaut habe und nichts nützliches gefunden habe. Meine Auswahl funktioniert gut und kann problemlos ausgewählt werden.

Verbindungszeichenfolge ist

<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" /> 

Der Einsatz ein Anruf von einem Teilansicht MVC ist und durch Ajax.BeginForm getan()

Antwort

0

Nachdem schließlich für eine Art von Ausnahme sucht paar Stunden verbrachte ich den Stack-Trace in einem Ereignisprotokoll und gefunden

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

So mit einigen Fischen um das Internet hatte diesen Fehler gespeichert mit einer Benutzerberechtigungseinschränkung machen.

hier ist ein Link, wenn jemand auf das gleiche Problem läuft. Ich denke, der virtuelle Debug-Server liest Ordnerberechtigungen anders, daher die Einschränkung nur bei der Bereitstellung (IIS ist ein wenig pingelig, wenn es um Berechtigungen geht). Und ich war überrascht, dass keine Ausnahme zurückgegeben wurde ... Ich musste so viel tun, um auf den Stack-Trace zugreifen zu können, ich möchte nicht einmal anfangen ... Wie auch immer der Link ist, folgen Sie einfach den Schritten und es sollte Ihnen zeigen in die richtige Richtung.

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

2

Sind Sie sicher, dass die Datenbank korrekt angebracht wird. Viele ISPs haben es eingerichtet, so dass Sie keine Datenbank mit der von Ihnen verwendeten Verbindungszeichenfolgemethodologie anhängen können. Das ist der erste Ort, an dem Sie suchen sollten. Ich würde denken, Sie würden einen Fehler bekommen, aber es könnte irgendwo im Stapel verschluckt werden.

Wenn Sie benötigen, um SQL zu einer SQL-Instanz (nicht SQL Express notwendigerweise) anstatt befestigen zu bewegen, könnte dies helfen: http://gregorybeamer.spaces.live.com/blog/cns!B036196EAF9B34A8!630.entry?sa=214268831

2

Was bedeutet die Funktion/Methode CreateCSVFile() tun? Wenn es Dateien in das Dateisystem schreibt, sieht es so aus, als hätten Sie ein Berechtigungsproblem. Der anonyme Benutzer für die Site verfügt möglicherweise nicht über Schreibberechtigungen.

Nur ein Gedanke.

Kev

+0

Mein CreateCSVFile macht nur einen großen String formatiert und ich gebe es Kopf- und Zeilen, ich kodieren dann die Zeichenfolge in einem byte [] meine EncodeTo64 Funktion und in die db einfügen. – Ayo

+0

Ok ... aber schreibt nichts in das Dateisystem? Nur Erinnerung? – Kev

+0

Alle Ausnahmen ausgelöst? Du schluckst keine in einem Versuch {} catch {// do nothing} block? – Kev