Laden...
Avatar #avatar-3073.png
DavidT myCSharp.de - Member
Student Winterberg Dabei seit 30.05.2007 998 Beiträge
Benutzerbeschreibung

Forenbeiträge von DavidT Ingesamt 998 Beiträge

19.07.2013 - 08:01 Uhr

Gratz 😃

EDIT: Yeah, bei mir passt auch der Papphut 😄

20.01.2011 - 09:43 Uhr

Hallo,

ich bin gestern dann auch darauf gekommen, das diese Metadaten ja gar nicht per WSDL publiziert werden und somit auch nicht im Client bekannt sein können. Trotzdem vielen Dank!

Gruß David

19.01.2011 - 16:38 Uhr

Hallo,

ich biete größere Bilder (~300kb) per WCF Service an mit folgender Konifguration:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="basicHttpBindingWithMtom" maxBufferSize="1048576"
                maxBufferPoolSize="1048576" maxReceivedMessageSize="1048576"
                messageEncoding="Mtom" />
        </basicHttpBinding>
        <netTcpBinding>
            <binding name="netTcpBindingForLargeMessages" maxBufferPoolSize="1048576"
                maxBufferSize="1048576" maxReceivedMessageSize="1048576">
                <readerQuotas maxArrayLength="1048576" maxBytesPerRead="1048576" />
            </binding>
        </netTcpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="LiveProxyBehavior">
                <serviceMetadata httpGetEnabled="true" httpGetUrl="" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="LiveProxyBehavior" name="WINSTON.Record.Recorder.LiveProxy.LiveProxyService">
            <endpoint address="" behaviorConfiguration="" binding="basicHttpBinding"
                bindingConfiguration="basicHttpBindingWithMtom" name="HttpEndpoint"
                contract="ILiveViewContract" />
            <endpoint binding="netTcpBinding" bindingConfiguration="netTcpBindingForLargeMessages"
                name="TcpEndpoint" contract="ILiveViewContract" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:6515/LiveProxy/DavidBuero" />
                    <add baseAddress="net.tcp://localhost:6516/LiveProxy/DavidBuero" />
                </baseAddresses>
            </host>
        </service>
    </services>
  </system.serviceModel>

Also die MessageSize-Eigenschaft ist für beide Bindings auf ca. 1MB festgelegt. Aber irgendwie wird das beim erstellen des Services einfach ignoriert und taucht nicht in der WSDL-Beschreibung auf und dementsprechend auch nicht in der config wenn ich es mit dem WcfTestClient teste:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="HttpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Mtom" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
            <netTcpBinding>
                <binding name="TcpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false"
                    transferMode="Buffered" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                    maxReceivedMessageSize="65536">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Transport">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                        <message clientCredentialType="Windows" />
                    </security>
                </binding>
            </netTcpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:6515/LiveProxy/DavidBuero"
                binding="basicHttpBinding" bindingConfiguration="HttpEndpoint"
                contract="ILiveViewContract" name="HttpEndpoint" />
            <endpoint address="net.tcp://localhost:6516/LiveProxy/DavidBuero"
                binding="netTcpBinding" bindingConfiguration="TcpEndpoint"
                contract="ILiveViewContract" name="TcpEndpoint">
                <identity>
                    <userPrincipalName value="XXX" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

Was ist das Problem? Funktioniert es nicht wenn ich 2 Bindings eine Konfiguration mitgebe?

Gruß David

14.01.2011 - 09:14 Uhr

Wenn man benutzerdefinierte Sections haben möchte, kommt man mit dem VS Designer leider nicht mehr aus.

Doch das Tool muss angepasst werden csd.codeplex.com

Gruß David

04.01.2011 - 13:52 Uhr

Hallo,

ich habe einen TestFiles Ordner in dem ich dateien schreibe, die während einem UnitTest gebraucht werden, aber jedes Mal, wenn ich eine Datei schreibe, bekomme ich eine Exception weil ich angeblich keinen Zugriff auf das Verzeichnis habe. In dem Verzeichnis hat allerdings JEDER Vollzugriff...

Jemand eine Ahnung was das ist?

Gruß David

29.12.2010 - 11:45 Uhr

Hey,

normal verwende ich zum Erstellen von Configurationsabschnitten den Configuration Section Designer, der auch wirklich genial ist. Nun wurde das Tool leider nicht an VS2010 angepasst und ich kann es nicht installieren. Kennt ihr noch ein ähnliches Tool das man dazu verwenden könnte? Weil das von Hand zu coden wäre echt stundenlange stupide arbeit...

Gruß David

28.12.2010 - 14:11 Uhr

Also mit der DataGrudComboBoxColum funktioniert das ganze nicht, wenn ich daraus eine TemplateColum mache und der eine Combobox hinzufüge funktioniert das ganze super... Ka was das für ein Fehler ist!

Gruß David

28.12.2010 - 12:43 Uhr

Hallo,

ich habe ein Fenster und nutze die this als DataContext. Innerhalb des Fensters habe ich ein DataGrid, welches ich an eine Liste X binde. In dem Datagrid habe ich eine Combobox, welche nicht an Liste X sondern an den DataContext des Fensters gebunden werden soll. Mit google habe ich nun zig Beispiele gefunden bei denen es mit RelativeBindings gelöst ist, das habe ich auch probiert, aber es funktioniert nicht:

<Window x:Class="NewCourseRegistration"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Neue Anmeldung für einen Kurs" Height="450" Width="405">
    <DockPanel>
        <Grid DockPanel.Dock="Top" Height="58">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="168" />
                <ColumnDefinition Width="215*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="29" />
                <RowDefinition Height="29" />
            </Grid.RowDefinitions>
            <Label Content="Datum:" Grid.RowSpan="2" Height="28" HorizontalAlignment="Left" Margin="0" Name="label1" VerticalAlignment="Top" />
            <Label Content="Notfallnummer:" Grid.Row="1" Grid.RowSpan="2" Height="28" HorizontalAlignment="Left" Margin="0" Name="label2" VerticalAlignment="Top" />
            <DatePicker SelectedDate="{Binding SelectedDate}" Grid.Column="1" Grid.RowSpan="2" Height="25" HorizontalAlignment="Left" Margin="0" Name="datePicker1" VerticalAlignment="Top" Width="115" />
            <TextBox Text="{Binding PhoneNr}" Grid.Column="1" Grid.Row="1" Height="23" HorizontalAlignment="Left" Name="textBox1" VerticalAlignment="Top" Width="180" />
        </Grid>
        <StackPanel DockPanel.Dock="Bottom" Height="30">
        </StackPanel>
        <DataGrid ItemsSource="{Binding Entities, Mode=TwoWay}" DockPanel.Dock="Top" AutoGenerateColumns="False" CanUserAddRows="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <DataGridTextColumn Header="Alter" Binding="{Binding Age}"/>
                <DataGridComboBoxColumn Header="Kategorie" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.Types}"  SelectedItemBinding="{Binding Category}"/>
                <DataGridComboBoxColumn Header="Fähigkeit"/>
                <DataGridTextColumn Header="Tage" Binding="{Binding Days}"/>
            </DataGrid.Columns>
        </DataGrid>
    </DockPanel>
</Window>

Fehlermeldung ist:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Window', AncestorLevel='1''. BindingExpression:Path=DataContext.Types; DataItem=null; target element is 'DataGridComboBoxColumn' (HashCode=44946895); target property is 'ItemsSource' (type 'IEnumerable')

Wo mache ich den Fehler?

Gruß David

18.12.2010 - 13:35 Uhr

unsafe und mit Pointern kopieren! Ist schnell und einfach zu implementieren!

Gruß David

17.12.2010 - 20:19 Uhr

Hey,

natürlich ist es das. Einfach die Phone 7 Tools runterladen, installieren und dann hast du die entsprechenden Vorlagen im VS und zusätzlich einen Emulator für das Device und noch Expression Blend mit Vorlagen für das Phone.

Gruß David

17.12.2010 - 14:45 Uhr

Ich habe wirklich ALLES andere abgesucht und im Moment als ich den Post nochmal gelesen habe, habe ich es gesehen 😄

Danke

Gruß David

17.12.2010 - 14:34 Uhr

Oh man, ich habs grad auch gefunden... Mensch Mensch Mensch... Ich sitz da seit einer Stunde dran, das kann doch nicht wahr sein... 😃

Naja, ist wohl klar welches Item ich aus der Liste wählen würde... g

Gruß David

17.12.2010 - 14:19 Uhr

Hallo,

ich habe folgendes Szenario:

</asp:TableCell><asp:TableCell>
                            <asp:DropDownList runat="server" ID="ddlLevel1">
                                <asp:ListItem Text="Anfänger" Value="Fortgeschritten" />
                                <asp:ListItem Text="Fortgeschritten" Value="Fortgeschritten" />
                            </asp:DropDownList>
                        </asp:TableCell><asp:TableCell>
                            <asp:DropDownList runat="server" ID="ddlDays1" OnSelectedIndexChanged="RecalculatePrice"
                                AutoPostBack="true">
                                <asp:ListItem Text="1" Value="1" />
                                <asp:ListItem Text="2" Value="2" />
                                <asp:ListItem Text="3" Value="3" />
                                <asp:ListItem Text="4" Value="4" />
                                <asp:ListItem Text="5" Value="5" />
                            </asp:DropDownList>
                        </asp:TableCell

Wenn ich in der ddlLevel etwas auswähle bleibt es ausgewählt. Sobald ich nun ein anderes Control auf der Seite nutze, welches einen PostBack auslöst, ist wieder das erste Item ausgewählt, er merkt sich also meine Auswahl nicht.

Was mache ich falsch?

Gruß David

15.12.2010 - 13:35 Uhr

Das war ja auch nicht ernst gemeint, genau so wenig ernst wie du es gemeint haben kannst, als du den Link zur FAQ gepostet hast und den Post hier geschlossen hast.

Ob der Stacktrace da wirklich hilft, wage ich ohnehin zu bezweifeln.

Jetzt kann der Thread geschlossen werden! Danke 😃

15.12.2010 - 13:14 Uhr

Gelöst, für alle die ein ähnliches Problem haben:

Der Fehler ist ein Bug im .NET Framework. Der Aufruf bzw. die Prüfung von SelectedTabs schmeisst eine Exception, wenn die Visible-Eigenschaft des tabControls auf false steht.

Microsoft connect: SelectedTab fails when TabControl is not visible

Evtl. sollte man das in die NullReferenceException-FAQ aufnehmen!

Gruß David

15.12.2010 - 12:16 Uhr

Hallo,

ich denke ich brauche nicht viel zu sagen, schaut euch den Screenshot im Anhang an, was ist da los?!?

Gruß David

15.12.2010 - 12:09 Uhr

Danke Morius, den Link meinte ich 😃

@Counterfeit: Das hat nichts mit beruhigen zu tun, aber hier opfern genug Leute ihre Frei- und Arbeitszeit um anderen bei ihren (richtigen) Problemen zu helfen, die selbst aus irgend einem Grund (welchem auch immer) nicht gelöst werden können! Das ist auch der Grund dieses Forums, aber er ist es nicht, wenn man sich aus Faulheit nicht mit den Grundlagen einer eingesetzten Technologie beschäftigen möchte. Der RegEx-Ausdruck den er hier fordert lässt sich nach jedem Tutorial sofort schreiben und er hat ja quasi schon den "Schlüssel" dazu selbst gegeben (escapen), also hat er offensichtlich noch nichtmal selbst probiert es zu lösen 😉

Gruß David

15.12.2010 - 11:50 Uhr

Das hat nichts mit "flamen" zu tun, aber wenn du etwas gelöst haben willst, ist es unverschämt zu sagen das du keine Lust hast dich mit der entsprechenden Technologie zu beschäftigen und hier auf eine fertige Lösung hoffst!

herbivore scheint irgend einen Shortcut zu haben um hier die Forenregeln zu zitieren... 😉 Schau sie dir einfach mal an.

Gruß David

15.12.2010 - 11:11 Uhr

Hey,
naja, also das hier ist kein Codesnipped-Versandkatalog wo du andere beauftragen kannst, etwas für dich zu machen. myCSharp soll eine Plattform sein, um sich bei Problemen auszutauschen. Beschäftige dich mit den RegEx Grundlagen, denn dein Problem ist wirklich einfach und mit ein wenig eigenarbeit auch ohne VOrkenntnisse schnell zu lösen!

Gruß David

15.12.2010 - 09:36 Uhr

Hallo herbivore,
warum sollte er ein Panel nehmen?

Möchtest du auf das Bild zeichnen oder auf die PictureBox?

Gruß David

15.12.2010 - 08:53 Uhr

Was genau ist denn der Output von deinem Programm derzeit? Du kannst auch dem Grafic Context eine Transformationsmatrix zuweisen, das macht es meist alles etwas einfacher.

Gruß David

14.12.2010 - 14:39 Uhr

Super, alles klar, dachte das erkennt WPF automatisch wenn ich es als Resource einbinde. Vielen Dank!

14.12.2010 - 14:16 Uhr

Achso und er erkennt das nicht, das ich sich die Bilder in der Resource befinden und wandelt den Pfad um?

Gruß David

14.12.2010 - 13:54 Uhr

Ich nutze WPF...

Mit deinem Ansatz klappt es super, vielen Dank. Warum geht das nicht mit der normalen Adressierung?

Gruß David

14.12.2010 - 12:30 Uhr

Hallo,
ich habe in meinem Projektordner ein Verzeichnis Images in dem ich diverse Bilder abgelegt habe und möchte diese nun, abhängig von einem boolschen Wert, per Databinding anzeigen lassen.

Dazu habe ich mir einen ValueConverter geschrieben:


{
    class RecorderStatusToImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            bool isOnline = (bool)value;
            if (isOnline)
            {
                return new BitmapImage(new Uri(@"Images/Recorder/RecorderStart.png",UriKind.Relative));
            }
            else
            {
                return new BitmapImage(new Uri(@"Images\Recorder\RecorderStop.png", UriKind.Relative));
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Wenn ich als URI den absoluten Pfad angebe funktioniert auch alles wunderbar, allerdings bekomme ich es nicht mit einem relativen Pfad hin, wie geht das?

Gruß David

09.12.2010 - 13:56 Uhr

Hallo,

ich experimentiere grad etwas mit Remoting herum und möchte dabei ein RemotingObjekt mit einer Methode SendMessage(string) und einem Event Callback definieren.

Dazu existiert in einer Contract-Assembly folgendes RemoteObjekt:

public class EventSource : MarshalByRefObject, RemotingTest.IEventSource
    {
        public void SendMessage(string Message)
        {
            Console.WriteLine(Message);
            Callback();
        }

        public event Action Callback;
    }

Mein Client befindet sich in einer Client.exe und sieht wie folgt aus:

Console.WriteLine("Key!");
            Console.ReadKey();
            TcpChannel channel = new TcpChannel();
            ChannelServices.RegisterChannel(channel, false);
            IEventSource obj = (IEventSource)Activator.GetObject(typeof(EventSource), "tcp://localhost:55666/HelloWorld");
            obj.Callback += () => Console.WriteLine("Callback!");
            obj.SendMessage("hallo welt");
            Console.ReadKey();

Mein Server befindet sich in einer Server.exe und sieht wie folgt aus:

EventSource obj = new EventSource();
            BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
            serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
            BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
            IDictionary props = new Hashtable();
            props["port"] = 55666;
            TcpChannel channel = new TcpChannel(props, clientProv, serverProv);
            ChannelServices.RegisterChannel(channel, false);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(EventSource), "HelloWorld", WellKnownObjectMode.Singleton);
            Console.ReadKey();

Sobald ich nun im Client mit der Zeile

obj.Callback += () => Console.WriteLine("Callback!");

das Event abbonieren möchte, bekomme ich eine TargetInvocationException mit folgender InnerException:

{"Die Datei oder Assembly &quot;RemotingClient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&quot; oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.":"RemotingClient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"}

Ich verstehe den Fehler nicht und habe nun schon seit einer Stunde google befragt.

Warum funktioniert das nicht?

Gruß David

06.12.2010 - 22:20 Uhr

Hallo,

vorweg: Ich habe sehr wenig Erfahrung mit asp.net, habe bei Google schon alles abgesucht, aber finde nichts:

ich habe eine dynamisch generierte Tabelle mit Textboxen in den Zellen. Nun möchte ich bei einem Button-Klick diese textboxen auslesen... Wie macht man sowas?

Danke im Voraus!

Gruß David

20.10.2010 - 19:43 Uhr

Hey Michael,

super, vielen Dank für deine Tips! Natürlich sollte das in den Tag von Button, war grad beim Tippen etwas durcheinander 😉

Gruß David

20.10.2010 - 19:17 Uhr

Hallo,

ich habe ein DataTemplate für eine ListBox erstellt in der sich für jedes Item ein Button befindet. Beim klick auf den Button möchte ich in der CodeBehind etwas machen, deshalb möchte ich die Referenz des aktuellen Objekts im Tag-Property des Buttons speichern. Nun ist normales Databinding kein Problem, aber wie wann ich auf das aktuelle Item binden?

Prinzip:


<ListBox Height="580" Name="listBox1" Width="460" ItemsSource="{Binding Items}" SelectionChanged="listBox1_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>           
                            <Button BorderThickness="0">
                                <Image Source="./Images/delete.png" Width="48" Height="48" Tag="{Binding this}"/>
                            </Button>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

Der Punkt ist {Binding this}, wie genau komme ich an das aktuelle Element des Bindings?

Gruß David

12.08.2010 - 20:13 Uhr

Hallo,

nach 9h suche haben wir den Fehler gefunden, für die suche es traten*FatalExecutionException *IndexOutOfRangeException *ApplicationException

Exceptions auf und zusätzlich wurden neue Arrays in der oben angesprochenen Weise allokiert.

Das problem lag in einer ganz anderen Methode, die zusätzlich mit der oben beschriebenen in einer Schleife aufgerufen wurde. Darin wurde mit einem Zeiger von einer StartAdresse bis zu einer EndAdresse neue Daten geschrieben. Die Berechnung der Endadresse war falsch und so hat er munter in die Daten geschrieben und scheinbar willkürlich dieses Problem verursacht.

Gruß David

12.08.2010 - 16:58 Uhr

Natürlich passiert es da nicht.

Der Fehler passiert auf 2 unabhängigen Entwicklermaschinen!

Gruß David

12.08.2010 - 16:51 Uhr

Herbivore es knallt in der Zeile also greift er doch offensichtlich darauf zu oder? Die Exception die du im Bild siehst (IndexOutOfRange Exception) fliegt in der fixed zeile... Ein Pointer ist ein Zeiger auf das 0-te Element, das 0-te Element existiert aber nicht!

Er zeigt 255-257 an, weil das 0-te Element in array[255,x,y] ist, das 1-te in array[256,x,y] und das 3-te in [257,x,y] und genau da steigt mein Verständnis aus...

Gruß David

12.08.2010 - 16:45 Uhr

Noch als Anmerkung: Der Test knallt nur bei jedem 5. oder 6. durchlauf...

Hallo herbivore,

in der Zeile


fixed (byte* ptrSnapshot = Data)

erfolgt der Zugrif auf das erste Element (den Zeiger) und da knallt es... Wenn ich es per Indexer mache knallt es ebenfalls!

Das C# das normal macht, also das die Indexe bei 0 Anfangen ist mir beuwsst, aber hier ist es bei jedem 5. oder 6. durchlauf nicht so.

Gruß David

12.08.2010 - 16:32 Uhr

Hallo,

ich entwickle im Moment ein Framework zur Bildverarbeitung mit .NET. Dabei allokiere ich ein 3-Dimensionales Array. Das gesamte Projekt wird nach TDD entwickelt und bisher hatte ich mit der Klasse RawImage8Bpp KEINERLEI Probleme. Nun bei einem speziellen Test, bekomme ich sehr merkwürdige allokationen von Arrays (siehe Bild im Anhang).

Wenn ich ein byte[3,2,1] allokiere, bekomme ich als Resultat ein Array der Länge 3,2,1, ALLERDINGS befinden sich die Elemente der ersten Dimension in byte[255-257,x,y].
Wenn ich nun auf Data[0,x,y] zugreife knallt es, weil ja in 0 nichts drin steht sondern erst ab 255!

In dem Projekt wird sehr viel mit unsafe code gearbeitet, also könnte auch ein falscher Pointer das problem sein? Der code in dieser Methode (fixed & unsafe) diente nur zu Debug-Zwecken, normal ist die Methode safe und enthält nur die Allokation des Arrays.

Habt ihr soetwas schon mal gehabt?

Danke im voraus!

Gruß David

23.03.2010 - 16:03 Uhr

Kontaktdaten oder Bankdaten? 😉

Gruß David

23.03.2010 - 15:59 Uhr

Achja, noch eins zu der Stringverkettung:

.NET legt für jeden String ein neues Objekt an, heißt das wenn du sowas hier machst:


string foo1 = "hallo";
string foo2= "welt";
foo1 += foo2;

wird bei Zeile 3 ein neues String-Objekt angelegt "hallowelt" und das der Referenz foo1 zugewiesen. Von daher kann dort eh kein BufferOverflow entstehen. Das ist einer der Gründe warum Stringverkettung in Schleifen unperformant ist und man lieber einen StringBuilder nehmen sollte.

Das gilt natürlich auch wieder nur für .NET Code.

Gruß David

23.03.2010 - 15:31 Uhr

Da jeder Arrayzugriff vom Framework überwacht wird, ist es in reinen .NET programmen nicht mehr möglich. Wenn man allerdings nativen Code hat, ist es nach wie vor möglich. Bei unsafe-Code bin ich mir nicht sicher, allerdings müsste es dort auch möglich sein.

Gruß David

16.03.2010 - 10:43 Uhr

Hallo,

ich versuche Bilder über einen Webdienst per net.tcp zu übertragen mit folgender BindingConfiguration:


<bindings>
            <netTcpBinding>
                <binding name="NetTcpBinding_IImageProxyContract" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                    maxReceivedMessageSize="65536000">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Transport">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                            <extendedProtectionPolicy policyEnforcement="Never" />
                        </transport>
                        <message clientCredentialType="Windows" />
                    </security>
                </binding>
            </netTcpBinding>
        </bindings>

Leider bekomme ich, wenn ich versuche ein Bild abzurufen, eine CommunicationException mit der Beschreibung> Fehlermeldung:

Das maximale Nachrichtengrößenkontingent für eingehende Nachrichten (65536) wurde überschritten. Verwenden Sie die MaxReceivedMessageSize-Eigenschaft für das entsprechende Bindungselement, um das Kontingent zu erhöhen.

Allerdings habe ich die maxReceivedMessageSize schon hochgesetzt. Muss ich da noch irgendwas anderes ändern?

Gruß David

16.03.2010 - 09:29 Uhr

Denke eine Hauptaufgabe eines Proxys ist das cachen von Daten, das ist sehr wichtig.

Gruß David

15.03.2010 - 23:08 Uhr

public string[] EndDir( IAsyncResult ar )
      {
            return del_Dir(ar);
      }

tuts auch schon 😉

Lg David

11.03.2010 - 16:24 Uhr

Ist der lokale Benutzer auf dem VS derselbe wie der auf der Remotemaschine? Hat der benutzer auf der Remotemaschine die Debugrechte?
Sonst funktioneirt das ganze nicht.

Gruß David

05.03.2010 - 16:09 Uhr

Was spricht dagegen die Funktionalitäten in ein normales 3-layer design zu packen? Die tcp geschichten und die auswertung der 2 bytes kapselst du komplett in eine klasse im Datenlayer und greiffst auf diese Funktionalität in der BL bzw dem VL zu...

Gruß David

05.03.2010 - 15:19 Uhr

Ist das Netzlaufwerk evtl für den benutzer der den Dienst ausführt nicht verbunden bzw, kann von ihm nicht genutzt werden?

Gruß David

05.03.2010 - 14:01 Uhr

Hast du mal Schrittweise debugt und geschaut woran es liegt? Fliegt eine Exception?

Gruß David

05.03.2010 - 13:21 Uhr

Also der bug ist microsoft seit 2008 bekannt, er ist reproduzierbar und es wurde bis heute nichts daran gemacht, so langsam verzweifelt man...

Habe diese Woche schon 5 (!!!) von diesen Fehlern gefunden, die waren alle bei connect bekannt und keiner wurde behoben.

Gruß David

05.03.2010 - 12:05 Uhr

Hey,

sollte mit Regex gehen.

Gruß David

05.03.2010 - 11:28 Uhr

Hallo,

ich nutze in einem Projekt eine Combobox in die etwas eingegeben wird. Nach jedem euingegebenen Zeichen wird ein Webdienst abgerufen und die verfügbaren Records im Ausklappmenü dargestellt. Da die Eingabe von Wildcards möglich sein soll, ist der Einsatz einer Textbox mit AutoCompletionMode nicht möglich. Das Ganze funktioniert auch hervorragend, wenn ich allerdings irgendwann dem ganzen ein leeres String-Array zuweise und die DropDownliste nocheinmal ausklappen will, gibt es eine ArgumentOutOfRange Exception irgendwo ganz tief im Framework. Um das Ganze nachzustellen, habe ich in einem WinForms Projekt einfach nur eine ComboBox auf die Form gezogen und führe folgenden Code in der OnLoad-Methode aus:


private void Form1_Load(object sender, EventArgs e)
        {
            comboBox1.Text = "";
            string[] items = new string[] { "8000", "7800", "7950", "7940", "7941", "7942", "7943" };
            comboBox1.Items.AddRange(items);
            comboBox1.Items.Clear();
            comboBox1.DroppedDown = true;
            
            comboBox1.Text = "7";
            items = new string[]{"7800","7950","7940","7941","7942","7943"};
            comboBox1.Items.AddRange(items);
            comboBox1.Items.Clear();
            comboBox1.DroppedDown = true;

            comboBox1.Text = "79";
            items = new string[] { "7950", "7940", "7941", "7942", "7943" };
            comboBox1.Items.AddRange(items);
            comboBox1.Items.Clear();
            comboBox1.DroppedDown = true;

            comboBox1.Text = "794";
            items = new string[] { "7940", "7941", "7942", "7943" };
            comboBox1.Items.AddRange(items);
            comboBox1.Items.Clear();
            comboBox1.DroppedDown = true;

            comboBox1.Text = "7940";
            items = new string[] { "7940" };
            comboBox1.Items.AddRange(items);
            comboBox1.Items.Clear();
            comboBox1.DroppedDown = true;

            comboBox1.Text = "79401";
            items = new string[] {};
            comboBox1.Items.Clear();
            comboBox1.DroppedDown = false;
        }

Ich simuliere da quasi eine Eingabe und die vom Webservice zurückgegebenen Records die dazu passen. Komischerweise knallt es wenn der String länger ist als die Items die gespeichert waren, ich dann Clear darauf aufrufe und die DropdownList ausklappe (manchmal knallt es schon im Code, manchmal erst wenn ich in der Form auf ausklappen klicke)

Ist das ein Bug oder verpeil ich da grade irgendwas?

Gruß David

05.02.2010 - 18:45 Uhr

Ich habe eine Control mit dem man bilder vor und zurück springen kann, zusätzlich kann in das bild rein und raus gezoomt werden. Dieses Control verwende ich in mehreren anderen Controls. In einem kann z.B. ein Rechteck auf das Bild gezeichnet werden, was eine Kantenbreite von 1px hat und links oben in der ecke einen Text stehen hat. Egal auf welchem Zoomlevel das Bild steht der draufgezeichnete Kasen muss immer 1px linienbreite haben und die Schrift gleich groß bleiben. Wenn ich in das Bild nachträglich reinzoome oder es verschiebe muss sich auf das Rechteck mit vergrößern und an derselben stelle bleiben wie vorher aber noch immer 1px Kantenbreite haben.

Hoffe das ist assagekräftig genug... Das Control geht nachher zum Kunden und er nutzt es in so einer Weise, deshalb ist es wichtig von aussen auf das Control zeiichnen zu können.

Gruß David

05.02.2010 - 14:50 Uhr

Ja aber ich möchte doch das auf die PictureBox der Inhalt des UserControls gezeichnet wird, wie soll ich es sonst machen?

Gruß David

05.02.2010 - 11:28 Uhr

Hallo,

meine Lösung sieht jetzt wie folgt aus:


    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
            pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint);
        }

        // Wenn die Picturebox neu gezeichnet wurde
        // soll die Paint-Methode des UserControls erneut aufgerufen
        // werden um die Inhalte, die auf das UserControl
        // gezeichnet werden sollen, über die Inhalte
        // der PictureBox gezeichnet werden
        void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            this.OnPaint(e);
        }

        // Wenn das UserControl neu gezeichnet wurde
        // soll auch die PicturBox neu gezeichnet werden
        // um erst die Inhalte der PictureBox und dann
        // die Inhalte des UserControls zu zeichnen
        protected override void OnInvalidated(InvalidateEventArgs e)
        {
            pictureBox1.Invalidate();
        }
    }

Etwas doof finde ich es, das die Methode Invalidate nicht virtuell ist, sonst könnte man das Neuzeichnen des UserControls erst unterbinden und dann in der Reihenfolge PictureBox->UserControl neu zeichnen.

Was haltet ihr davon?

Gruß David