Ok, es ist wirklich ein "Port Timeout = 30 seconds" am Gerät eingestellt.
Dann krieg ich das hin, danke.
Danke,
Möglich ist es bestimmt. Hab leider so gut wie keine Schnittstellenbeschreibung vom Gerät. Kann mir aber morgen nochmal die Konfiguration anschauen, ob ich dort was von nem Timeout finde.
Falls es so wäre, wie könnte ich denn darauf reagieren, da meine Applikation ja die Verbindung aufbaut und der Scanner nichts von meiner App weiß?
TcpListener kann ich in diesem Fall ja nicht verwenden, TcpClient ist schon die richtige Komponente oder?
Hallo,
ich connecte mich über TCP mit einem Ethernet-Barcodeleser, der eine IP-Adresse hat.
Dazu verwende ich folgenden (vereinfachten) Code:
using (TcpClient client = new TcpClient("192.168.20.41", 1002))
{
using (NetworkStream stream = client.GetStream())
{
while (true)
{
int readCount;
byte[] data = new byte[client.ReceiveBufferSize];
while (stream.DataAvailable && (readCount = stream.Read(data, 0, client.ReceiveBufferSize)) != 0)
{
strData += Encoding.UTF8.GetString(data, 0, readCount);
}
if (!string.IsNullOrWhiteSpace(strData) && strData.EndsWith(endOfLine))
{
OnRead(strData);
strData = "";
}
//Thread.Sleep(200);
}
}
}
Wenn ich die Applikation starte und Barcodes einscanne erhalte ich die richtigen Werte vom Gerät. Wenn ich allerdings 30 Sekunden im Leerlauf bin, also 30 Sekunden lang seit dem Start der Applikation oder seit dem letzten gescannten Barcode vergangen sind, werden keine Daten vom Gerät mehr empfangen. Networkstream.DataAvailable bleibt immer false, TcpClient.Available bleibt immer 0, aber TcpClient.Connected ist immernoch true. Wenn ich die Applikation neustarte, geht es wieder.
Muss ich die Verbindung irgendwie am Leben halten? Was könnte dafür sonst die Ursache sein?
Vielleicht hat jemand eine Idee.
Danke im Voraus!
Ja, ich möchte gerne Linq mit NHibernate verwenden.
Kann gut sein, dass ich es noch nicht ganz verstanden habe.
Heißt das, das die Linq-Queries nicht ins Dao gehören, sondern eher in ein Repository bzw. direkt in den ServiceLayer (wenn ich IQueryable verwende)?
Danke für dein Beispiel,
vielleicht war das "StartsWith"-Beispiel ein schlechtes, da man wie du es eben gezeigt hast, die Einschränkung auch über den Code implementieren kann.
Sagen wir, ich müsste die Einschränkung über ein Query machen, dann wäre es ja (auch in deinem Fall) wieder nur ein Delegieren zum DataLayer.
Hallo,
das heißt du hättest deinen Datenzugriff direkt im ServiceLayer? Dieser sollte eigentlich nicht wissen, wie die Daten geholt werden.
Moin,
kurze Frage weil ich hier immer darüber stolpere.
Meine Persistenzschicht besteht aus einem GenericDao<T> und konkreten Dao's die davon ableiten.
Nehmen wir mal an, im UI habe ich die Möglichkeit nach Mitarbeitern zu suchen die mit einem bestimmten Buchstaben anfangen.
Was ist hier nun Best Practise? Ich benötige ja sowohl eine Service als auch eine Dao-Methode.
Natürlich könnte z.B. _employeeService.GetEmployeesStartsWith("A") intern nur _employeeDao.GetEmployeesStartsWith("A") aufrufen die wiederrum per NHibernate den Query absetzt.
Aber das ist doch unschön.
Wie löst ihr sowas?
Danke.
Guten Morgen,
da ich nun "leicht" genervt bin, habe ich mich durchgerungen hier mal dieses komische Verhalten darzustellen.
Ausgangspunkt:
Erstmal vorne weg, die Anwendung läuft ohne Probleme, auch das Umschalten zwischen deutsch und englisch funktioniert.
Nun zum Problem:
Beim Starten / Attachen des Debuggers kommen ca. 8000 Zeilen der Meldung 'A first chance exception of type 'System.Globalization.CultureNotFoundException' occurred in mscorlib.dll'.
Das beeinträchtigt den Debug-Start enorm! (ca. 3 Minuten)
Je größer die Seite (je mehr Resources), desto mehr dieser Fehler treten auf.
Die CurrentUICulture ist de-DE.
Danke im Voraus!
Guten Morgen,
es geht um folgende Klasse:
public class ClientGroup : DomainObject
{
public string Name { get; set; }
public UniqueList<Client> Clients { get; private set; }
public ClientGroup( string name )
{
Name = name;
Clients = new UniqueList<Client>();
}
public override bool Equals( object obj )
{
if( base.Equals( obj ) ) // Hier wird DomainObject.Equals() aufgerufen, die einen Typ-Vergleich macht
{
if( ReferenceEquals( this, obj ) )
{
return true;
}
ClientGroup clientGroup = obj as ClientGroup;
return Name.Equals( clientGroup.Name ) && ... // Was nun?
}
return false;
}
public override int GetHashCode()
{
// Und hier?
return Name.GetHashCode() ^ Clients.Count;
}
}
Ich möchte gerne den Namen sowie die Listenelemente vergleichen.
Wenn ich aber Clients.Equals(clientGroup.Clients) prüfe, wird ja object.Equals() und damit nur ReferenceEquals aufgerufen, aber KEIN Wertevergleich der Listenelemente.
Hat jemand von euch eine Idee wie man auf Gleichheit der Listenelemente prüft?
Sonst müsste ich mir ne Helper-Methode schreiben, was ich in diesem Fall eigentlich umgehen möchte.
PS: Wer oberes gelöst hat, darf mir auch gleich noch verraten, wie man dazu noch GetHashCode implementiert 😉
Dankeschön!
Weder noch, es handelt sich um eine ASP.NET Anwendung. (Aber sollte das nicht irrelevant sein?)
Businesslogik sollte am besten in die Domain oder nicht?
Wie würde es denn in der Praxis aussehen?
// Aufruf aus einer ASPX-Page?
gridView.DataSource = Repository<Customer>.GetAll();
// Oder aus dem Domänenobjekt?
gridView.DataSource = Customer.GetAll();
public IList GetAll()
{
return Repository<Customer>.GetAll();
}
Wenn ich es so wie oben mache, würde das UI quasi direkt auf die Persistence zugreifen, was vermutlich nicht sinnvoll ist.
Im zweiten Fall wäre die Domain schlechter testbar, weil das Repository nicht mehr so einfach zu mocken ist.
Wie löst du sowas?
Moin!
Erstmal vielen Dank für eure Antworten.
Eine Art von ActiveRecord mache ich momentan (ungewollt, wusste nicht, dass man das so nennt).
Repository gefällt mir ganz gut, habe mich etwas eingelesen und noch ein paar Fragen dazu:
Wenn ich es richtig verstanden habe, würde ja das Objekt sich nicht mehr selbst speichern können, sondern das Repository hat eine Save(T)-Methode.
Würde ich dann im UI direkt Repository.Save(Customer) aufrufen? Oder sollte das UI das Repository auch nicht kennen?
Wo würdet ihr die Repositories ablegen? Bei der Persistenzschicht? Oder in eine extra Assembly?
Repository<T> würde ja die Standard-Datenzugriffs-Logik implementieren. Wenn ich für ein Domänenobjekt nun eigene Logik (bestimmtes HQL-Statement) benötige, mache ich dafür dann ein spezifisches Repository (z.B. CustomerRepository)?
Vielen Dank schonmal 😉
Moin!
Danke für eure Antworten.
Ich verwende ja NHibernate zum Speichern der Entities am Ende.
Allerdings muss ich doch das Objekt speichern können, indem ich z.B. Save() darauf aufrufe.
Da ich jedoch nicht die NHibernate-Logik (session.SaveOrUpdate(),..) innerhalb jeder Save()-Methode verwenden kann/will (weil Domain die Persistance nicht kennt!), frage ich mich wie sich die Verbindung herstellt?
Guten Abend,
ich zerbreche mir gerade den Kopf wie man die Persistenzschicht und das Domänenmodell einer Anwendung am besten trennt.
Ich habe mir folgende Gedanken gemacht, komme aber nicht wirklich weiter:
'Domain'
Customer
- Save()
- Delete()
- GetById()
Employee
'Persistence'
Repository<T>
- Save()
- Delete()
- GetById()
Gemäß dem Repository Pattern würde die Persistenzschicht eine Klasse für den Datenzugriff bereitstellen, die wiederrum mit oder ohne eines ORM auf die Datenbank zugreift.
Was ich bisher gelesen habe sollte ja die Domain NICHT auf die Persistenzschicht zugreifen, wie würde ich aber dann z.B. ein Domänenobjekt abspeichern?
Pseudocode:
Customer c = new Customer("Foo");
c.Save(); // Wie ist hierfür die Implementierung wenn das Objekt die Persistenzschicht nicht kennt?
Ich hoffe ihr wisst ungefähr was ich möchte 😉
Vielen Dank schonmal.
Guten Morgen und danke für die vielen Antworten!
momentan ist es so, dass nicht die HttpSession (das wäre böse) sondern die Hibernate-Session (nicht weniger böse) als Singleton gehalten wird, was bei hohem Traffic natürlich Probleme verursacht (habe ich gestern abend noch nachgestellt).
Die Hibernate-Session für jeden Benutzer in der HttpSession zu halten funktioniert und es werden keine Exceptions mehr geschmissen auch bei 100 ausführenden Threads gleichzeitig.
Ich werde jetzt noch ein paar Szenarien durchspielen, aber ich vermute, dass nun alles passt.
Vielen Dank für eure Hilfe 🙂
Hallo,
ich verwende NHibernate 3.0 als O/R-Mapper.
Auf meiner WebSite bekommt jeder Benutzer sein eigenes ISession-Objekt (NHibernate Verbindung zur Datenbank), welches in einer ASP.NET Session gespeichert wird.
Jetzt habe ich aber auch noch einen WebService, der auch auf die Datenbank zugreifen muss.
Zum Testen habe ich erstmal das ISession-Objekt in einem Singleton verkleidet.
Wenn aber nun viele Anfragen gleichzeitig kommen, fliegen willkürliche NHibernate Fehler (z.B. DataReader already open, usw.)
Nun meine Frage, ob ich auch im WebService auf die HttpSession des aufrufenden Benutzers zugreifen kann um sich so, wie im Web, die ISession separat zu halten?
Vielleicht gibt es auch Dinge zu beachten?
Schönen Dank schonmal im Voraus.
Hallo Tom,
ich habe ein SQL-Statement, dass nach dem manuellem Leeren des Caches (DBCC DROPCLEANBUFFERS) ca. 10 Sekunden dauert und bis zum nächsten Leeren natürlich gecacht wird. (< 0 Sek)
Beim Kunden treten ab und an SQL-Timeouts zu ganz willkürlichen Zeiten auf, auch teilweise nachts um 4 Uhr, wenn fast niemand mehr arbeitet.
Daher die Vermutung, dass der Cache auch geleert wird, wenn nichts getan wird.
Im Netz finde ich leider keine gute Erklärung.
verwendetes Datenbanksystem: MSSQL Server 2005 Enterprise Edition
Hallo,
kann mir jemand erklären, wann der Cache des SQL Servers 2005 geleert wird?
Also zum Beispiel, wenn seit einem gewissen Zeitraum keine Transaktion stattgefunden hat oder wenn der Cache überläufen würde.
Gibts da Grenzen oder ist das willkürlich?
Guten Abend,
ich habe einen Windows Service der mit einer GUI kommunizieren soll.
Die GUI ist eine Konfigurations-Oberfläche für den Service, sie soll Einstellungen am Server (XML-Datei) ändern können und ihn benachrichtigen, falls eben Änderungen an der Konfiguration gespeichert wurden.
Zudem hat die GUI noch einen Monitor, der Server-Arbeiten loggen soll.
Für den ersten Punkt verwende ich momentan eine Singleton-ApplicationSettings Klasse, mit Read() und Write()-Methoden zum Lesen und Speichern der XML-Datei, die sowohl am Client als auch am Server bekannt ist.
Die Klasse wird als SingletonCall veröffentlicht.
Das funktioniert zwar, aber ich bin mir keineswegs sicher, ob das eine elegante geschweige denn eine gute Lösung ist. Habt ihr dazu eine Meinung, wie könnte es besser gehen?
Zu Punkt zwei (Monitoring) habe ich noch keine Idee, da der Client immer hören müsste, ob er eine Benachrichtigung vom Server bekommt.
Klappt das mittels Remoting überhaupt (z.B. mit Events)?
Wäre schön, wenn jemand ein paar Tipps auf Lager hätte. Danke!
Habe alles weggelassen, und dennoch erscheint die Yellow Page mit den Exception-Details.
Ich möchte einfach das der Request trotzdem fortgeführt wird, damit ich dann dynamisch ein ExceptionControl anzeigen kann.
Hallo,
ich habe eine kleine Webanwendung in der ich alle unhandled Exceptions die auf einer Seite auftreten mit der überschriebenen OnError Methode der Page-Klasse abfange.
protected override void OnError( EventArgs e )
{
Exception ex = Server.GetLastError().GetBaseException();
Context.ClearError();
base.OnError(e);
}
Allerdings wird dann hinterher immer eine YellowPage mit dem Fehler angezeigt.
Was ich möchte ist aber, erstmal nichts zu tun. D.h. der Fehler soll ignoriert werden und die Seite soll ganz normal weitergeladen (also auch gerendert) werden, soweit möglich.
Danke im Voraus.
Benutzt du irgendwo ne ControlCollection, worauf er versucht zu mappen...?
Oder versuch mal von WebControl abzuleiten.
Hatte eigentl. bisher noch nie Probleme mit Enums und dem Designer.
Ein WebService ist nicht selbstständig lauffähig. Man baut mit einem Client eine Verbindung auf und diese Verbindung trennt sich dann automatisch, wenn die Methode abgearbeitet wurde oder ein Timeout aufgetreten ist (Standard 30 Sekunden glaube ich).
Hast du die Assembly und den Namespace für die CustomControls registriert? (Web.config oder Page direkt)
Beispiel web.config:
<system.web>
<pages>
<controls>
<add assembly="MyAssembly" namespace="MyControls.CustomControls" tagPrefix="cc1" />
</controls>
</pages>
</system.web>
Keiner ne Idee oder?
Denke dass es die OOP nicht erlaubt, da ja die Masterpage ein Member der Contentpage ist und die Basisklasse ja nicht auf die Member der abgeleiteten Klasse zugreifen darf.
Alles im gleichen Projekt.
Also keine Namespace oder Assembly-Probleme.
Hallo,
ich habe folgendes Problem festgestellt:
Innerhalb der ContentPage1.aspx kann ich via ((MasterPage)this.Master).Foo() die Methode aufrufen.
In der Basisklasse geht das allerdings nicht, weil er darin nicht meine MasterPage-Klasse kennt, sondern nur die System.Web.UI.MasterPage-Klasse
Gibt es dafür ne Lösung?
Moin,
jeder kennt doch sicherlich Setup-Applikationen wo man entweder "Weiter" oder "Zurück" klicken kann, und sich lediglich der Inhalt ändert. Wie als würde man in einem Buch blättern.
So etwas brauche ich auch, wenn es geht nur mit einer Form.
Und ohne tausendfachem Controls ein und ausblenden.
Ist das möglich, bzw. gibt es da schon ein .NET Steuerelement vordefiniert?
Hi,
habe eine ClickOnce-Anwendung für unseren Kunden entwickelt. Die Dateien liegen auf einem WebServer im Intranet.
Der Benutzer (allgemein wenig Rechte) kann sich die Anwendung ohne Probleme vom WebServer herunterladen und installieren.
Beim Starten erhält er aber eine SecurityException mit UIPermission.
Laut meinem Kollegen hat man die .NET Framework Konfiguration in der Systemsteuerung nur, wenn man Visual Studio installiert hat. Ist das richtig?
Falls ja, wie könnte man am einfachsten einem Benutzer vollen Zugriff auf die Anwendung erlauben?
Vielen Dank im Voraus.
Oha!
Es kommt tatsächlich keine störende Sicherheits-Warnung von Outlook wenn man aus dem PDF-Formular sendto macht!
Vielen Dank schonmal!
Der letzte Link scheint interessant zu sein.
Allerdings befürchte ich, dass dann Outlook wieder meckert, weil ein anderes Programm versucht via Outlook (mailto) eine E-Mail zu senden...
Die Sache mit dem WebServer geht einfach nicht, weil der Kunde das nicht möchte. Die Anwendung muss abgeschottet sein von Zugriffen von aussen. Fragt nicht...
Problem ist nur, wenn Ihr keine Internetserver habt...
richtig! Das ist das Problem.
Ansonsten kannst du auch ein Formular, das über das Internet erreichbar ist, basteln, und die Leute direkt per Link in einer Email auf dieses Formular leiten, und es dann ausfüllen lassen.
Ja das würde gehen (und wäre auch die beste Möglichkeit). Ist aber leider nicht möglich, da Intranet-Anwendung!
Hallo,
vielleicht hat jemand von euch eine Idee wie man folgendes realisieren könnte:
In einer Intranet-ASP.NET-Anwendung wird eine E-Mail (mit einem Formular, welcher Art auch immer) an einem Client ausserhalb des Intranets geschickt.
Der Client soll das Formular so einfach wie möglich ausfüllen können, und dann wieder eine E-Mail mit dem ausgefüllten Formular zurückschicken. Das ich danach einen MailListener usw. brauche ist klar. Es geht aber erstmal um oben definierte Aufgabe.
Der Client hat keine Möglichkeit auf die Intranet-Anwendung zuzugreifen.
Mit welchem Formulartyp würde man sowas lösen?
PDF? Da kann man aber denke ich ausgefüllte Formulare nur ausdrucken und nicht speichern.
HTML/mailto/POST? Da kommt aber ständig mit Outlook eine Sicherheitsmeldung, ob man es wirklich tun will, die man auch nicht weg bekommt.
Danke erstmal.
Okay,
ich habe ja eine Lösung die für 99% der Fälle funktioniert. Habe nur gedacht, vielleicht weiß jemand von euch noch was.
Danke sehr!
Hmmmm!
Gute Frage! Gegenfrage(n):
Moin moin,
ich kämpfe mich nun schon seit ein paar Stunden mit dem Problem herum, dass ich ein Bitmap exakt in der linken oberen Ecke (unabhänig vom ausgewählten Drucker), also genau bei 0,0 andrucken möchte.
Ohne Page-Seitenränder oder Printer-Seitenränder.
Habe schon alles mögliche probiert, also die Properties...
PrintDocument.OriginAtMargins
PrintDocument.DefaultPageSettings.Margins
PrintDocument.PrinterSettings.DefaultPageSettings.Margins
PrintDocument.DefaultPageSettings.PaperSize
usw.
Aber irgendwie kommt es mir so vor, als würde immernoch manchmal ein Rand auftreten.
So schwer sollte es doch aber garnicht sein:
Und schon sollte es doch funktionieren oder?
Vielleicht hat ja jemand ein Patentrezept, dass auf allen Druckern ordentlich funktionieren.
Viele Grüße
Hallo,
ich habe eine Solution mit einem executable Projekt und einem DLL Projekt.
im exe Projekt habe ich die DLL referenziert.
innerhalb der DLL habe ich weitere DLLs referenziert.
Wenn ich nun meine exe publishe wird zwar die Projekt-DLL mit gepublisht, die anderen referenzierten DLLs aber nicht!
Woran kann das liegen - und wie löse ich das Problem?
PS: Wenn ich die Solution nur Builde und nicht Publishe geht's natürlich.
Ist schön und gut, XML geht aber erst ab Version 2003. 😉
Der Kunde muss nun letztendlich entscheiden ob er Einschränkungen akzeptiert oder Geld dafür ausgeben möchte.
Danke euch beiden
Hast Recht, ohne Excel-Installation kann ich auch nicht auf die COM-Objekte zugreifen.
Puhh... hättest du vielleicht nen Vorschlag?
Ich bräuchte einen XLS-Export mit folgenden Funktionen:
Habe schon ewig gegooglet:
Gibt es sonst noch was, außer kommerzielle Bibliotheken zu verwenden?
Moin, moin,
ist es möglich, Daten in *.xls-Dateien zu exportieren ohne das eine Version von Microsoft Excel installiert ist?
Über Add Reference habe ich die COM-Bibliothek "Microsoft Excel 9.0 Object Library" einem VS-Projekt hinzugefügt.
Dann kann ich natürlich auf annähernd alle Funktionen die es auch in MS Excel gibt via Programmcode zugreifen.
Jetzt habe ich aber Excel installiert, und es funktioniert klar.
Aber würde es auch ohne eine Installation funktionieren?
Klar ist das ich dann eben nur eine Datei erzeugen kann, sie mit Daten befülle und dann wieder speichere. Aber eben nicht öffnen/starten.
Danke im Voraus!
Wie wärs mit:
ListBox1.SelectedIndex = -1;
Morgen,
mit System.IO.FileInfo kann ich ja auf Dateiinformationen zugreifen.
Kriege ich auch (für eine Intranet-Anwendung, alle Benutzer an einer Domäne angemeldet) heraus, WELCHER Benutzer die Datei verändert hat?
Also welcher Windows-Benutzer sozusagen...
Danke.
Hallo,
doch, das Debuggen funktioniert auch bei Webanwendungen.
Du solltest:
Hallo,
kann mir jemand sagen, was diese Exponentialschreibweise: 1.100000E-001 für eine Zahl ist?
Danke
Ein Fragezeichen steht für "kein Mal oder genau einmal", aber ich dachte nur, wenn man es hinter einen Ausdruck schreibt.
hier steht es ja aber direkt nach der Klammer
ok, ist ja spitze!
Aber was genau bedeutet das nun?
"(?<Punkt>.*?)"
Mich irritieren vor allem die Fragezeichen am Anfang und am Ende 😉
Okay, habs jetzt nochmal angegangen.
Bisher soweit geschafft:
string input = "Trier - Saarbrücken Zwischen AS Eppelborn und AS Illingen Gefahr in beiden Richtungen";
string s = @"\d|Bauarbeiten|Baustelle|Gefahr|gesperrt|in beiden|linker|rechter|Tagesbaustelle|Unfall|Verkehrsbehinderung";
Match match = Regex.Match(input, @"zwischen\s+(?<Punkt1>.*?)\s+und\s+(?<Punkt2>.*)\s+(" + s + ")", RegexOptions.IgnoreCase);
Nun krieg ich bei oberen Beispiel allerdings
Punkt1 = AS Eppelborn (richtig)
Punkt2 = AS Illingen Gefahr (falsch)
heraus.
Aber warum? "Gefahr" steht doch vor "in beiden" im string s.
oi's kloar damit werd ichs mal testen:
Allerdings weiß ich nicht warum man das $ Zeichen dazu braucht hm hm...