Laden...
M
Michael Schuler myCSharp.de - Member
Software Engineer Zürich, Schweiz Dabei seit 29.08.2004 329 Beiträge
Benutzerbeschreibung

Forenbeiträge von Michael Schuler Ingesamt 329 Beiträge

18.07.2011 - 12:42 Uhr

Hallo zusammen

Für ein neues Projekt habe ich caliburn.micro gewählt, und stecke nun beim DataBinding mit dem ListPicker fest. Wenn ich statt des ListPickers eine normale DropDown nehme, funktioniert das Binding wie es soll. Also es werden alle Elemente angezeigt und bei einer Auswahl wird das SelectedItem Property korrekt gesetzt.

Im Quellcode des Frameworks habe ich folgenden Eintrag gefunden:

AddElementConvention<Selector>(Selector.ItemsSourceProperty, "SelectedItem", "SelectionChanged")
    .ApplyBinding = (viewModelType, path, property, element, convention) => {
        if (!SetBinding(viewModelType, path, property, element, convention))
            return false;

        ConfigureSelectedItem(element, Selector.SelectedItemProperty,viewModelType, path);
        ApplyItemTemplate((ItemsControl)element, property);
        return true;
    };

Da der ListPicker aber nicht von Selector erbt, funktioniert dies nicht. Daher habe ich meinem Bootstrapper eine CustomConvention hinzugefügt:

static void AddCustomConventions() {
    AddElementConvention<ListPicker>(ListPicker.ItemsSourceProperty, "SelectedItem", "SelectionChanged")
        .ApplyBinding = (viewModelType, path, property, element, convention) => {
            ConventionManager.ConfigureSelectedItem(element,
                ListPicker.SelectedItemProperty,viewModelType, path);
            return true;
        };
}

Leider funktioniert das so nicht, es werden in der Liste keine Einträge angezeigt.

btw: ich habe die gleiche Frage noch auf StackOverflow gestellt.

Bin froh um jeden Hinweis!

LG Michael

24.02.2011 - 17:30 Uhr

Hallo zusammen

Ich habe ein Grid, welchem ich zur Laufzeit neue Spalten hinzufüge oder entferne. Diese DataGridComboBoxColumn-Spalten habe ein ItemsSource- sowie ein SelectedItem-Binding.

Das Problem ist nun, sobald ich die Spalten einmal ausgeblendet habe und danach wieder einblenden möchte, funktioniert das SelectedItem-Binding nicht mehr, die Spalten sind dann einfach leer. Ich habe das gleiche Verhalten, wenn ich die Spalten jedes Mal lösche und dann wieder neu erstelle und hinzufüge.

So erstelle ich meine Spalte im CodeBehind:

private static DataGridColumn GetListColumn(ListAttribute attribute, BindingBase binding) {
    string path = string.Format(
        CultureInfo.InvariantCulture,
        "AttributeValues.Attributes[{0}].ListItems",
        attribute.ID);

    var sourceBinding = new Binding {
        Path = new PropertyPath(path)
    };

    var column = new DataGridComboBoxColumn();
    var style = new Style(typeof(ComboBox));
    style.Setters.Add(new Setter(ItemsControl.ItemsSourceProperty, sourceBinding));
    column.ElementStyle = style;
    column.EditingElementStyle = style;
    column.SelectedItemBinding = binding;
    column.DisplayMemberPath = "Name";

    return column;
}

Und so lösche oder erstelle ich die Spalten:

private void UpdateColumns() {
    foreach (var attributeColumn in _attributeColumns) {
        GridItems.Columns.Remove(attributeColumn);
    }
    _attributeColumns.Clear();

    if (ViewModel.EditorType == SectionEditorType.Attribute) {
        var builder = new AttributeColumnBuilder();
        var attributes = ((PartsSubViewModel)ViewModel).SectionPartAttributes;

        foreach (var column in builder.GetColumns(attributes)) {
            _attributeColumns.Add(column);
            GridItems.Columns.Add(column);
        }
    }
}

Damit man sich das besser vorstellen kann, habe ich ein Bild angehängt.
Die Spalte, die noch Werte anzeigt, ist eine die im XAML definiert und daher nicht betroffen ist.

Danke für jede Hilfe,
LG Michael

07.01.2011 - 12:41 Uhr

Hallo talla

Der ConnectionString ist

Data Source=127.0.0.1;Initial Catalog=db;User ID=usr;Password=pw;MultipleActiveResultSets=true;

Wie bereits erwähnt, hat mich googeln, resp. bingen, auf das One Session per Request Pattern aufmerksam gemacht, das von NHibernate empfohlen wird. Ich habe dies nun mit einem HttpModule umgesetzt, was eine grosse Besserung bezüglich der Server-Last brachte.
Aktuell habe ich einzig noch ab und zu das Problem, dass ich eine LazyInitializationException erhalte. Aber nicht wirklich reproduzierbar. Kann es sein, dass die Session an den Objekten haften bleibt, wenn ich diese über Threadgrenzen hinweg in einem CacheService behalte?

01.01.2011 - 21:11 Uhr

Hallo MarsStein

Danke für die schnelle Antwort. Es handelt sich bei der Datenbank um ein SqlServer 2008 R2 Express. Die DB befindet sich auf dem gleichen Server und hat eine durchschnittliche CPU-Auslastung von unter einem Prozent, daher liegt es kaum an der Datenbank 😦

Ich bin beim googeln auf das "One Session per Request"-Pattern gestossen, welches man mittels HttpHandler implementieren soll. Hat da jemand einen Vorschlag, wie man das am besten implementieren soll? Habe bisher Codesnippets für asp.net mvc gefunden, nicht für classic asp.net.

Liebe Grüsse
Michael

01.01.2011 - 20:50 Uhr

Hallo Community

Seit einem halben Jahr arbeite ich an einem Projekt, welches am 2. Januar veröffentlicht wird. Seit heute, 1. Januar, sind die switch-Umstellungen (switch.ch ist die Schweizer Domain-Registrierungsstelle) gemacht und seit dann ist die Seite permanent überlastet. Auf dem Server läuft der w3wp.exe Dienst auf 100% und das arbeiten ist fast unmöglich.

Bis gestern hatten wir gar keine Probleme, aber seit der Umstellung geht gar nichts mehr. Wir haben temporär eine index.html Seite erstellt, die anzeigt, dass die Seite derzeit umgestellt wird. Für die index.html Seite habe ich im UrlRewritig die DefaultPage auf index.html gesetzt.


<urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" defaultPage="index.html" defaultProvider="RegEx" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">

Zum einen sehe ich in den IIS-Logs diverse Anfragen von Bots, die jedoch alle mit 404 beantwortet werden, da es diese Files nicht mehr gibt.
Zum anderen wird an manchen Stellen via Javascript ein WCF Service aufgerufen mittels DOMAIN/CalenderService.svc/js.

Meist erhalte ich ThreadAbortExceptions von NHibernate, kann aber nicht wirklich einen Fehler beim NHibernate finden. Ich nutze übrigens FluentNHibernate. Zudem habe ich an NHibernate-Mapping ja nichts geändert, seit der Umstellung.

Mittels dem EQATEC-Profiler versuchte ich herauszufinden, wo das Problem liegen könnte, fand aber nichts spezifisches.

Meine grösste Bitte: Wie kann ich den Fehler näher eingrenzen? Wie finde ich heraus, wo das Problem liegt? Gibt es Tools oder Logfiles, die mir weiterhelfen könnten?

Liebe Grüsse
Michael

Anhang

Häufige Exceptions aus dem Logfile


01.01.2011 19:45:45|Error|General|WIN-PRNQ2O17GTP|Type: HttpUnhandledException
Message: Exception of type 'System.Web.HttpUnhandledException' was thrown.
Source: System.Web
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Inner Exception:
Type: ADOException
Message: could not execute query
[ select website0_.Id as Id34_, website0_.Guid as Guid34_, website0_.Name as Name34_, website0_.DefaultPageId as DefaultP4_34_, website0_.DefaultDomainId as DefaultD5_34_ from Website website0_ inner join Domain domains1_ on website0_.Id=domains1_.WebsiteId where domains1_.Name like ? ]
  Name:domain - Value: ?
[SQL: select website0_.Id as Id34_, website0_.Guid as Guid34_, website0_.Name as Name34_, website0_.DefaultPageId as DefaultP4_34_, website0_.DefaultDomainId as DefaultD5_34_ from Website website0_ inner join Domain domains1_ on website0_.Id=domains1_.WebsiteId where domains1_.Name like ?]
Source: NHibernate
   at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
   at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
   at NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results)
   at NHibernate.Impl.SessionImpl.List(String query, QueryParameters parameters)
   at NHibernate.Impl.QueryImpl.List()
   at NHibernate.Impl.AbstractQueryImpl.UniqueResult[T]()
   at Cms.Bll.WebsiteService.GetByDomain(User user, String domain) in C:\Users\Michi\Documents\Programmieren\SVN Projekte\cms für gvc\Cms\Cms.Bll\MediaCenter\MediaContentService.cs:line 262
   at IWebsiteServiceProxy56420579342844c991e288056648cceb.InvocationGetByDomain_1.InvokeMethodOnTarget()
   at Cms.Contracts.Interceptors.LoggingInterceptor.Intercept(IInvocation invocation) in C:\Users\Michi\Documents\Programmieren\SVN Projekte\cms für gvc\Cms\Cms.Contracts\AclProviderService.cs:line 34
   at IWebsiteServiceProxy56420579342844c991e288056648cceb.GetByDomain(User user, String domain)
   at Cms.Web.BasePage.get_CurrentWebsite()
   at Cms.Web.BasePage.OnPreInit(EventArgs e)
   at System.Web.UI.Page.PerformPreInit()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Inner Exception:
Type: SqlException
Message: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
Source: .Net SqlClient Data Provider
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
   at System.Data.SqlClient.TdsParserStateObject.ReadByte()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at NHibernate.Connection.DriverConnectionProvider.GetConnection()
   at NHibernate.AdoNet.ConnectionManager.GetConnection()
   at NHibernate.AdoNet.AbstractBatcher.Prepare(IDbCommand cmd)
   at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
   at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean autoDiscoverTypes, Boolean callable, RowSelection selection, ISessionImplementor session)
   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
   at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
   at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)

22.11.2010 - 12:00 Uhr

Hallo, ist das Thema noch aktuell?

Ich habe folgenden Link gefunden:
Reading Barcodes from an Image - III

LG Michael

22.10.2010 - 07:38 Uhr

Hallo zusammen

Habe das Problem gelöst, es lag an einem falschen (MPEG4) Video-Stream innerhalb des MP4-Containers. Habe nun meinen FFMPEG-Aufruf so angepasst, dass H264 rauskommt. Nun muss der iTunes nur noch merken, dass er das Format trotzdem abspielen kann, das schnallt der noch nicht. Aber das ist ein anderes Problem, kein Silverlight-Problem.

Grüsse
Michael

21.10.2010 - 16:20 Uhr

Hallo zusammen

Ich versuche nun schon die ganze Woche, Videos im MP4 Format in Silverlight abzuspielen. Gemäss Microsoft ist MP4 mit AAC ja seit Silverlight 3 unterstützt, dennoch erhalte ich die Fehlermeldung 3001 AG_E_INVALID_FILE_FORMAT.

Als Player habe ich den SMFPlayer eingebunden, die Zuweisung im .xaml.cs geschieht folgendermassen:


var videoItem = new PlaylistItem();
videoItem.Duration = TimeSpan.FromSeconds(myMediaContent.Duration);
videoItem.MediaSource = new Uri(myMediaContent.FileDownloadUrl);
mySmfPlayer.Playslist.Add(videoItem);

Der Vollständigkeit halber noch das XAML:


<controls:ChildWindow
	... 
	xmlns:Core="clr-namespace:Microsoft.SilverlightMediaFramework.Core;assembly=Microsoft.SilverlightMediaFramework.Core">

	<Grid x:Name="LayoutRoot" Margin="2">
		... 
		<Core:SMFPlayer MediaFailed="mySmfPlayer_MediaFailed" AllowFullScreenPinning="True" AutoPlay="False" IsControlStripVisible="True" ContinuousPlay="False" Height="317" VerticalAlignment="Top" StartMuted="False" PlayerGraphVisibility="Disabled" LoggingConsoleVisibility="Disabled" Name="mySmfPlayer" ChaptersVisibility="Disabled" CaptionsVisibility="Disabled" PlaylistVisibility="Disabled" />
		
		... 
		... 
	</Grid>
</controls:ChildWindow>

Bei einem wmv-Video funktioniert das auch super, aber da ich die gleichen Videos auch als Podcast anbiete, kann ich nicht wmv verwenden, da der iTunes damit keine Freude hat.

Ich hoffe ihr könnt mir weiterhelfen,
Grüsse Michael

07.09.2010 - 07:43 Uhr

Guten Morgen Peter

Im File NewPageController.ascx habe ich folgende Einträge von Hand gemacht:

<%@ Register TagPrefix="cms" TagName="NewPageDetailForm" Src="~/Admin/Pages/NewPageDetailForm.ascx" %>
<%@ Register TagPrefix="cms" TagName="NewPageParentChooser" Src="~/Admin/Pages/NewPageParentChooser.ascx" %>
<%@ Register TagPrefix="cms" TagName="NewPageFieldChooser" Src="~/Admin/Pages/NewPageFieldChooser.ascx" %>

Eine andere Web.config habe ich nicht. Im original-Web.config hatte ich die Einträge auch von Hand gemacht gehabt, aber die haben ja eben nicht funktioniert. Für mich hört sich das irgendwie nach Bug an. Evtl. hat es auch damit zu tun, dass die Einträge im Web.config alle den gleichen Tag-Prefix hatten.

LG Michi

06.09.2010 - 13:36 Uhr

Hallo Peter

In der Web.config habe ich nun folgende Einträge entfernt:


<system.web>
	<pages>
		<controls>
			<add tagPrefix="cms" namespace="Cms.Web.Admin" assembly="Cms.Web"/>
			<add tagPrefix="cms" namespace="Cms.Web.Admin.Pages" assembly="Cms.Web"/>
			<add tagPrefix="cms" namespace="Cms.Web.Admin.Templates" assembly="Cms.Web"/>
		</controls>
	</pages>
</system.web>

Nun registriere ich die Controls auf jeder Page von Hand. So funktioniert es. Sobald ich die Einträge im Web.config wieder hinzufüge, funktioniert es nicht mehr.

Mein Problem ist somit zwar gelöst, aber warum das so ist, verstehe ich nicht...

LG Michi

06.09.2010 - 09:04 Uhr

Hallo Phönix

So wie ich das verstehe, ist dir egal, ob es eine consolen-exe oder eine dll ist, korrekt? Dann definiere doch ein interface mit einer Methode im Stil von "Dictionary<string, string> Run(string s)". Dann erstelle beliebig viele DLLs mit Implementationen dieses Interfaces und lade diese DLLs in deine Webanwendung hoch.
DLLs kannst du dynamisch in eine eigene Application Domain laden, dieser Linkzeigt wies geht.
Wenn du dann noch einen File-Watcher auf dein Upload Directory machst, werden die DLLs automatisch geladen, nachdem du das File raufgeladen hast.

LG Michi

06.09.2010 - 08:25 Uhr

Hallo Peter

Ich habe mal alles in ein Testprojekt extrahiert - und ja, der Fehler tritt immer noch auf. Das Testprojekt habe ich angehängt. Ist ein VS2008 Projekt.
Der Aufruf ist: http://localhost:51139/Admin/NewPage.aspx
Die Logging-Komponente habe ich auch abgehängt, der Fehler tritt aber im NewPageController in der Methode Page_Load auf.

LG Michi

05.09.2010 - 21:31 Uhr

Gemäss Pagelifecycle werden die Controls aber zwischen PreInit und Init erstellt.

Raised after all controls have been initialized and any skin settings have been applied.

Meiner Meinung nach stimmt der Code, könnte das Projekt irgendwie kaputt sein? Ich deploye übrigens nicht via IIS, sondern via VS-integrierten Server.

05.09.2010 - 18:34 Uhr

Hallo zusammen

Eigentlich bin ich ja kein Web-Anfänger, aber diese Woche fühle ich mich wirklich wie einer. Warum? In der Page_Load Funktion sind meine Objekte (statische, keine dynamischen) null. Und daher erhalte ich logischerweise eine NullReferenceException.

Zuerst einmal der Code:
Default.aspx


...
<div id="content">
	<cms:NewPageController ID="myNewPageController" runat="server" />
	<cms:Login ID="myLoginController" runat="server" />
</div>
...

NewPageController.ascx


<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="NewPageController.ascx.cs" Inherits="Cms.Web.Admin.Pages.NewPageController" %>

<cms:NewPageDetailForm ID="myNewPageDetailForm" runat="server" />
<cms:NewPageParentChooser ID="myNewPageParentChooser" runat="server" />
<cms:NewPageFieldChooser ID="myNewPageFieldChooser" runat="server" />

NewPageController.ascx.cs


protected void Page_Load(object sender, EventArgs e)
{
	myNewPageDetailForm.Controller = this;
	myNewPageFieldChooser.Controller = this;
	myNewPageParentChooser.Controller = this;

	GoToNextStep();
}

Alle Controls sind in den jeweiligen *.ascx.designer.cs deklariert und in den *.ascx files eingebunden. Sind also statische Controls. Mein Verständnis von ASP.NET ist eigentlich, dass diese Controls während des Lifecycle erstellt werden. Bei mir scheint dies aber nun nicht der Fall zu sein - an was könnte das liegen?
Die Exception taucht in der Klasse NewPageController in der Methode Page_Load in der ersten Zeilte auf.

Danke für die Hilfe,
LG Michi

05.09.2010 - 15:10 Uhr

Hallo,

dieser Beitrag hat sich erledigt, ich setze nun auf DynamicObjects vom CaslteProject, dort kann man beliebig viele Interceptoren an ein Objekt ranhängen.

LG Michael

01.09.2010 - 11:39 Uhr

Hallo zusammen

Für ein aktuelles Projekt nutze ich einen IoC Container, der mir über meinen Service zwei verschiedene Proxies stülpt. Das sieht dann so aus:


var impl = myContainer.Resolve<T>();
var logger = myContainer.Resolve<ILoggingService>();
var cacheService = myContainer.Resolve<ICacheService>();
impl = getCachingProxy<T>(impl, cacheService);
impl = getLoggingProxy<T>(impl, logger);
return impl;

Die Funktion getCachingProxy sieht so aus, diejenige für den LoggingProxy ähnlich:


private static T getCachingProxy<T>(T service, ICacheService cacheService)
{
	var proxy = new CachingProxy<T>(cacheService, service);
	return proxy.GetTransparentProxy();
}

Sobald ich aber nun mit zwei Proxys arbeite, funktioniert der Aufruf nacher nicht mehr. Wenn ich nur einen Proxy verwende (egal welchen) funktioniert der Aufruf.

Die Hauptroutine ist die folgende:


IPageDataService pageService = ServiceLocator.Get<IPageDataService>();
List<IPage> pages = pageService.LoadAll();

und genau bei pageService.LoadAll(); erhalte ich dann die TargetException mit der Meldung "Object does not match target type.". Meine Proxies erben übrigens von System.Runtime.Remoting.Proxies.RealProxy.

Kennt sich da jemand aus und kann mir helfen?
Danke!

LG Michael

21.12.2006 - 19:36 Uhr

Hallo basi

Schau mal genau hin, der Splitcontainer beinhaltet 2 Panels. Und diesen Panels kannst du dann deine PictureBox hinzufügen.

LG Michi

17.08.2006 - 17:11 Uhr

Hallo Community

Ich habe ein sehr komisches Problem. Ich lade auf zwei verschiedenen Seiten ein Control. Auf der einen Seite funktioniert alles perfekt, der Debuger geht durch die Funktionen OnPreRender und OnInit durch, die Anzeige ist gut. Auf der anderen Page hingegen werden beide Methoden nicht aufgerufen (der Breakpoint wird nicht angesprungen) und das Control wird nicht angezeigt. Ich setze aber vorher ein Property, was ohne Exception funktioniert.

Kennt ihr dieses Phänomen? Kann jemand helfen?

Liebe Grüsse
Michael

21.06.2006 - 13:38 Uhr

Hallo Talla

Danke für deine Ausführungen. Also mit Generics habe ich mich mal kurz beschäftigt, resp. einen Webcast angeschaut. Solange sich sonst nichts geändert hat, denke ich, ich kann es wagen auf 2.0 zu programmieren.

Wie sieht es mit dem Web-Developer aus? VS03 hat bei HMTL-Darstellungen manchmal ziemlich mühe. Ich möchte das Design auch im VS machen, nicht noch den Dreamweaver bemühen - verstehe ich das richtig das die sogn. Masterpages das gleiche sind wie Templates im Dreamweaver?

LG Michael

21.06.2006 - 13:03 Uhr

Hallo Community!!

Ich werde demnächst an einem Wettbewerb teilnehmen und muss mich entscheiden ob ich mit .NET2 oder mit 1.1 arbeiten will. Mein Problem ist, dass ich noch nie mit .NET2 gearbeitet habe und auch nicht mit dem VS05. Das Projekt wird eine Web-Anwendung sein.

Was würded ihr mir raten? Ich werde auch nicht mehr dazu kommen mich genügend einzuarbeiten. Sind die änderungen gravierend? Oder nur eher minimal und überwiegt der Nutzen von 05 extrem? Was wären die Vorteile?

Danke für eure Hilfe!!

LG Michael

28.04.2006 - 13:36 Uhr

Hallo

Ich würde die Funktion Graphics.MeasureString() verwenden, die gibt dir die Breite und Höhe des Textes zurück.

02.04.2006 - 13:29 Uhr

*peinlich*

Sorry, das war der Fehler 🙁

Danke für die Geduld 🙂

Das ist mir jetzt wirklich peinlich...

02.04.2006 - 13:09 Uhr

Die folgende Klasse liegt als .cs Datei in einem Ordner und wird zur Laufzeit Kompiliert. Das kompilieren läuft wunderbar, das Assembly ist ja danach nicht null und gibt den Typ "Skript" zurück...

using System;
using PluginScriptingFramework.Scripting;

namespace FrameWorkTest {

	/// <summary>
	/// Summary description for Skript.
	/// </summary>
	public class Skript : IScript {
		#region IScript Members

		public DateTime Datum {
			get { return new DateTime(2006,03,31,18,30,0); }
		}

		public string Autor {
			get { return "Michi"; }
		}

		public void Run() {
			SayHello("Hans");
			SayHello("Fritz");
		}

		public Version Version {
			get { return new Version(0, 1); }
		}

		public string Beschreibung {
			get { return "Beschreibung"; }
		}

		#endregion


		private void SayHello(string name) {
			Console.WriteLine("Hello {0}", name);
		}
	}
}
02.04.2006 - 12:48 Uhr

Sie sind von MarshalByRefObject abgeleitet. Es funktioniert auch nicht, wenn ich einfach den DatenTyp Object nehme und keinen As-Operator verwende...

Was vieleicht noch interessant wäre ist, dass dies in einer gespiegelten AppDomain stattfindet. Doch nach mir dürfte das keinen Einfluss haben.

02.04.2006 - 12:16 Uhr

Hallo Community

Ich habe die folgende Methode:

private IList GetScriptsFromAssembly(Assembly asm) {
	ArrayList al = new ArrayList();
	foreach(Type type in asm.GetTypes()) {
		// auf diese Art ist obj = null
		MarshalByRefObject obj = asm.CreateInstance(type.FullName) as MarshalByRefObject;

		// auf diese Art ist obj ebenfalls = null
		obj = asm.CreateInstance(type.FullName, false, BindingFlags.Public |
			BindingFlags.Instance | BindingFlags.CreateInstance, null,
			new object[] {}, null, null) as MarshalByRefObject;

		if(obj is IScript)
			al.Add(obj);
	}
	return al;
}

Das Assembly, welches übergeben wird, ist nicht null. Es enthält ein Type namens "Skript". Und obwohl der Type "Skript" in der foreach-Schleife gefunden wird, liefert CreateInstance() null zurück. Warum? In der Doku steht, null wird zurückgeliefert, wenn der Type nicht gefunden wird. Doch wenn dies der Fall wäre, käme er ja nicht in die Schleife...

Hoffe ihr könnt mir helfen...

LG Michi

30.03.2006 - 08:35 Uhr

Ich möchte mein Problem ein wenig ausführlicher beschreiben:

AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
setup.PrivateBinPath = "Plugin";
setup.ShadowCopyFiles = "true";

AppDomain app = AppDomain.CreateDomain("PluginDomain", AppDomain.CurrentDomain.Evidence, setup);

ArrayList assemblies = new ArrayList(app.GetAssemblies());
ArrayList plugins = new ArrayList();
foreach(Assembly asm in assemblies) {
	plugins.AddRange(GetPlugin(asm));
}
foreach(IPlugin p in plugins)
	Console.WriteLine("Plugin: " + p.Name);

setup.ApplicationBase ist das Verzeichnis in dem ich die Anwendung startete. Dort habe ich einen Unterordner "Plugin" in welchem ich eine Assembly habe. Doch die ArrayList assemblies hat nur eine Assembly drin, die mscorlib.dll! Warum? Ich blicke nicht durch...
Hoffe ihr könnt mir helfen 🙂

LG Michi

29.03.2006 - 23:22 Uhr

Der IE zeigt den Druck-Button an, Firefox nicht...

29.03.2006 - 19:42 Uhr

Dann mach doch aus den beiden Oberflächen je ein Usercontrol, dem du den Status übergeben kannst. Dann kannst du zur Laufzeit einfach das UC auswechseln...

LG Michi

29.03.2006 - 17:24 Uhr

Original von talla
Hab grad deinen Blog gelesen 😉 brauchst du das Beispiel noch? Also so wie ich es momentan verwende kann ichs dir eh leider nicht überlassen, aber könnte dir ne kleine "Technologiedemo" zeigen wo ich das in den Anfängen mal selber ausprobiert habe wie das funktioniert.

Gruß Talla

Hallo Talla, ist das Angebot noch Aktuell? Ich würde gerne mal reinschauen! Habe mich den ganzen Tag mit AppDomains und Setups herumgeschlagen, aber irgendwie komme ich auf keinen grünen Zweig 🙁

27.03.2006 - 14:51 Uhr

Hallo Community

Ich beginne nächste Woche mit meiner Facharbeit. Die Projektplanung mache ich grösstenteils in UML. Da die Arbeit bewertet wird frage ich mich nun, wie ich die Eigenschaften von Klassen in UML abbilden soll, da sie ja weder Attribute noch Operationen sind. Ich habe mal eine Grafik angehängt.
Was meint Ihr? Variante 1 oder 2?

Quellcode der Klasse:

public class VarianteN {

	private string name;
	private string vorname;

	public VarianteN() {
	}

	public string Name {
		get { return name; }
		set { name = value; }
	}

	public string Vorname {
		get { return vorname; }
		set { vorname = value; }
	}
}

LG Michael

20.01.2006 - 23:41 Uhr

Hallo Community

Ich habe ein Form welches als MDI-Container funktioniert. Dort habe ich rechts unten ein Panel mit meinem Logo als Hintergrundgrafik. Wenn ich jetzt aber ein Child-Form starte, ist dieses HINTER dem Logo. Wie kann man das ändern?

Danke schonmal

Michi

20.12.2005 - 21:47 Uhr

Hallo

Ich habe nun die Logik in eine neue Klasse ausgelagert und das anzeigen funktioniert jetzt super. Ich sehe bei jedem User jetzt, ob er online oder offline ist. Zumindest, wenn er beim gehen auf "logout" klickt. Wenn er dies jedoch nicht tut, bleibt er ewig als online markiert.
Ich habe gelesen, dass die "Session_End" erst gerufen wird, NACHDEM die Session gekillt wurde. Nun, wenn die Session dann ja nicht mehr existiert, weiss ich ja gar nicht, welcher Benutzer jetzt wieder offline ist.
Wie kann ich dieses Problem lösen?

20.12.2005 - 18:09 Uhr

Hallo Norman-Timo

Genau so hatte ich mir das auch gedacht. Mein Problem ist nun, dass Session_Start schon aufgerufen wird, wenn die Person noch nicht angemeldet ist, so fällt diese Methode für mich weg. Ich habe allerdings in der Global.asax eine Methode erstellt, bei der ich mich anmelden kann. Hier mal mein Code:

public void loginPerson(Person p) {
	if(p != null) {
		if(!(Application["loginPerson"] as ArrayList).Contains(p.ID))
			(Application["loginPerson"] as ArrayList).Add(p.ID);
	}
}


public void logoutPerson(Person p) {
	if(p != null) {
		if((Application["loginPerson"] as ArrayList).Contains(p.ID))
			(Application["loginPerson"] as ArrayList).Remove(p.ID);
	}
}


public ArrayList LoginUserID {
	get { return Application["loginPerson"] as ArrayList; }
}


private bool isLogin() {
	return (Session["person"] != null);
}


private Person getLoginPerson() {
	if(isLogin()) {
		return Session["person"] as Person;
	} else {
		return null;
	}
}


protected void Application_Start(Object sender, EventArgs e) {
	Application.Add("loginPerson", new ArrayList());
}
 

protected void Session_End(Object sender, EventArgs e) {
	Person p = getLoginPerson();
	logoutPerson(p);
}

Sobald sich die Person nun anmeldet, übergebe ich der Funktion loginPerson in der Global.asax nun das Objekt und beim abmelden ebenso. Nur erhalte ich eine Exception sobald ich die loginPerson das erste mal aufrufe, weiss aber nicht wiso. An der ArrayList kann es ja eigentlich nicht liegen, die wird ja in der Application_Start erstellt.

Hast du vielleicht irgend einen Tipp für mich?

Danke

Michi

19.12.2005 - 20:49 Uhr

Hallo Community

Ich stehe momentan vor einem Problem, welches ich noch nie hatte, weil ich mich damit zu wenig beschäftigte. Nun komme ich leider nicht mehr drum herum:
Es existiert eine Website, die als Communityplattform dient. Wenn sich die Personen dort einlogen, schreibe ich das Person-Objekt in die Session. Dies funktioniert wunderbar.
Mein Problem ist jetzt, dass ich ein Personenverzeichnis ausgeben möchte, und die Leute, die gerade Online sind, irgendwie markieren. Doch wie finde ich nun heraus, wer online ist? Ich hab mir zwar mal die Global.asax angesehen, doch die Funktion Session_start() wird ja schon aufgerufen, wenn man noch nicht angemeldet ist, sondern erst auf der Site. Zudem, wie finde ich heraus, wenn eine Person die Website verlässt ohne sich abzumelden und die Session irgendwann ausläuft?

Danke für eure Hilfe

Michi

24.11.2005 - 09:40 Uhr
select description from sysmessages where error = @number
14.11.2005 - 14:31 Uhr

Kann ich dir nicht sagen, doch rate ich dir trotzdem dazu, Methoden die von mehreren Seiten benützt werden, in Klassen auszulagern. Ist nicht nur guter Programmier-Stil, sondern dient auch der Übersichtlichkeit und Wartbarkeit.

14.11.2005 - 14:29 Uhr

Stell dir doch deine Übungsaufgaben selber. Lies irgend ein C#-Buch und mache zu jedem Thema eine paar Aufgaben...

Openbook C#

14.11.2005 - 14:08 Uhr

Hey genau, Unterhosen würde ich auch kaufen!!
Oder eine Kravatte wäre auch sinnvoll, für ein Vorstellungsgespräch oder so 😉

14.11.2005 - 14:06 Uhr

Ausser es werden dann so gegen 1000 Bilder, dann wäre ein Thread nicht wegzudenken...

14.11.2005 - 11:29 Uhr

tage / 365 = jahre 😉

14.11.2005 - 08:15 Uhr

Ich weiss ja nicht wie das so bei euch ist, doch bei uns wird geheizt 😜
Darum kann ich heute auch mein Polo-Shirt von Oracle zur Schau tragen...

13.11.2005 - 20:25 Uhr

Ja, ein Polo-shirt würde ich mir auch ziehen 😁

10.11.2005 - 13:30 Uhr

Danke für deine Hilfe, ich denke damit komme ich weiter.
Ich realisiere zurzeit einen Chat, welchen ich ohne Datenbank laufen lassen will. Da ich keinen Zugriff auf den Server habe, wollte ich dies mit einem WebService realisieren.

Gut möglich, dass dies nicht der "übliche" Web ist, doch habe ich mich mal darauf konzentriert.

LG Michael

10.11.2005 - 13:19 Uhr

Naja, wenn mehrere User im Chat sind, hat dann ja jeder eine eigene Session...
Oder täusche ich mich da?

10.11.2005 - 13:18 Uhr

Ich verstehe nicht genau was du machen willst, kannst du nicht ein wenig Code posten und dann anzeigen, was nicht funktioniert?

10.11.2005 - 13:16 Uhr

Original von svenson
Eine ordentliche Tracht Prügel hilft immer... 🙂

Und gehts mit Gewalt nicht, gehts mit noch mehr Gewalt 😉

10.11.2005 - 13:14 Uhr

Und wenn das ganze auch ohne Sessions funktionieren soll?
Zum Beispiel bei einem Chat-Server, welcher ja immer die gleichen Werte liefern muss, und dies permanent...

10.11.2005 - 13:10 Uhr

Neuer Name, gleicher Inhalt?
Oder sind nun meine bisherigen Kurse nutzlos?

10.11.2005 - 13:06 Uhr

auf die Variablen aus anderen Funktionen

Du meist sicherlich Klassen statt Funktionen, oder? Hast du einen Beispielcode anhand dem wir dir helfen können?