Laden...

Profil von BillTuer

myCSharp.de - Member Mitglied seit
B
BillTuer
myCSharp.de - Member
62
Themen
325
Beiträge
Dabei seit
04.04.2005
Letzte Aktivität
vor 14 Jahren
Herkunft
Gießen
Erstellt vor 14 Jahren

Guten Tag.

Angenommen ich habe einen Webservice, dem ich Daten übergeben kann, die dann in eine Datenbank geschrieben werden.
Diesen Webservice spreche ich mit Ajax an.

Wie kann ich denn nun sicher gehen, dass nicht jeder, der den entsprechenden Aufruf kennt, direkt meinen Webservice, und damit meine Datenbank, mit Daten befeuern kann?
Alle Parameter können ja immer ausgelesen werden, da es sich um Javascript handelt...

Vielen Dank.

Erstellt vor 14 Jahren

Habe jetzt einfach die OnServerClicks durch Post-Requests ersetzt.
Projekt übernehme ich nur temporär, daher konnte ich keine größeren Änderungen Richtung DB angehen.
Danke.

Erstellt vor 14 Jahren

Ich war sehr lange in der ASP MVC Welt unterwegs und bin jetzt leider gezwungen, ein Projekt im klassischen Stil umzusetzen. Hilfe! 😉

Dabei habe ich folgendes Problem:
ich habe ein Control, welches ich auf einer Seite mehrfach einbinde. Dieses Control enthält einen Link, der ein onserverclick-Event auslöst und nach außen verfügbar macht. Die umgebende Seite abonniert dieses Event und reagiert entsprechend (in diesem Fall ein Vote für das entsprechende Item/Control).
So wie ich es jetzt verstanden haben, lädt der Postback quasi die Seite neu und führt danach mein Event aus (vote). Problem ist dabei nur, dass ich damit folgenden Ablauf habe:
Seite baut sich auf > Ich klicke vote > Postback > Vote wird in der DB gespeichert > Seite neu angezeigt > Vote ist aber nicht zu sehen (steht aber in der DB)
Erst ein Refresh der Seite zeigt dann auch wirklich den Vote an.

Es kann doch jetzt nicht Sinn der Sache sein, dass ich Abfrage ob ich mich im Postback befinde und dann den Vote nur für die Anzeige noch mal erhöhe.
Wie geht man denn normalerweise mit solch einem Szenario um?

Erstellt vor 14 Jahren

Bei mir ging es um eine Excel-Datei, die komplette ausgelesen wird. Die ausgelesenen Daten sollten dann in ein entsprechendes Objekt überführt und in der DB gespeichert werden.
Ich reiche die Daten jetzt bis ins Repository durch und erstelle das Objekt erst dort und bei Bedarf, nicht mehr für alle Daten.
Klappt prima, vielen Dank für deine Hilfe.

Erstellt vor 14 Jahren

Ok, würde behaupten, dass ich das so weit verstanden habe 😉

Ich muss die Id also bis ins Repository reichen und mir dort das passende Objekt holen... Oder gibt es noch andere Lösungsansätze?

Erstellt vor 14 Jahren

Vielen Dank erstmal.

Aber wieso klappt es denn dann ohne den Repository-Aufruf? Dort weise ich doch dann quasi auch employee.Location =meinAnderesObjekt zu, oder nicht?

Erstellt vor 14 Jahren

Ich habe in einem Daten-Model die Entity "Location" mit folgender Methode innerhalb des zugehörigen Repositories:


public Location GetLocation(int locationId)
{
    Location location = Context.Locations.First(l => l.Id == locationId);

    if (null == location)
        throw new ArgumentNullException("Location-Id: " + locationId);

    return location;
}

Diese Methode wiederum rufe ich in einer Methode > Schleife auf:


for (int i = 1; i <= values.GetLength(0); i++)
{
    Employee employee = new Employee();
    ...
    employee.Location = employeeRepository.GetLocation(locationId);
    ...
    employees.Add(employee);
}

Innerhalb der For-Schleife werden Objekte erstellt, einer Liste hinzugefügt und am Ende wieder an das Repository gegeben:


employeeRepository.UpdateEmployees(employees);

Nun habe ich folgenden Effekt: jedes Objekt, für welches ich GetLocation aufgerufen habe, hat den EntityState "added", obwohl ich an keiner Stelle etwas schreibe, sondern nur auslese. Rufe ich also SaveChanges auf, verdoppeln sich die gesamten Einträge in der DB.

Ändere ich also den Aufruf innerhalb der Schleife folgendermaßen, habe ich den Verdopplungseffekt nicht, da ich den Repository-Aufruf nicht habe:


for (int i = 1; i <= values.GetLength(0); i++)
{
    Employee employee = new Employee();
    ...
    employee.Location = new Location() { Id = 1, Name = "Berlin" };
    ...
    employees.Add(employee);
}

Hilfe! 😃
Vielen Dank im Voraus!

Erstellt vor 15 Jahren

Ich möchte für eine bestehende Datenbank den Service Broker aktivieren, da ich momentan die Fehlermeldung "Der SQL Server Service Broker für die aktuelle Datenbank ist nicht aktiviert. Als Folge davon werden keine Abfragebenachrichtigungen unterstützt. Aktivieren Sie den Service Broker für diese Datenbank, wenn Sie Benachrichtigungen verwenden möchten." erhalte, wenn ich das zugehörige Projekt starten möchte.

Für die Aktivierung habe ich folgenden Befehl versucht: "ALTER DATABASE myDb SET ENABLE_BROKER"
Die Abfrage wird dann auch ausgeführt, scheint nur einfach kein Ende zu nehmen. Nach einer Laufzeit von 2,5 Tagen habe ich eben abgebrochen 😉
Gibt es eine andere Möglichkeit, den Service Broker zu aktivieren?

Update: Datenbank offline und dann wieder online schalten, Eigenschaften aufrufen und dort das Service Broker Flag auf true setzen. Jetzt gehts 😃

Erstellt vor 15 Jahren

Argh, man muss einfach die Teamprojektsammlung noch mit in die URL packen, also z.B. http://xxx.xxx.xxx.xxx:8080/tfs/DefaultCollection. Klappt dann ohne Probleme 😃

Vielen Dank für deine Links!

Erstellt vor 15 Jahren

Ich habe hier einen frischen TFS 2010 aufgesetzt und dieser läuft so weit ohne Probleme. Mit VS 2010 kann ich mich ohne Probleme verbinden, Teamprojekte erstellen etc.

Leider schaffe ich es jedoch nicht, mit Visual Studio 2008 zuzugreifen. Dies lag im ersten Schritt daran, dass der TFS 2010 standardmäßig eine URL wie http://xxx.xxx.xxx.xxx:8080/tfs hat, welche man in Visual Studio 2008 gar nicht eingeben kann.
Für dieses Problem gibt es ein Update von Microsoft mit dem tollen Namen "Visual Studio Team System 2008 Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010". Dieses und das erforderliche SP1 für VS 08 habe ich installiert, was zur Folge hat, dass ich die richtige URL eingeben kann. Dennoch bekomme ich keine Verbindung zu meinem neuen TFS 2010.

Hat jemand eine Idee? Vielen Dank.