Laden...
M
Michael Schuler
myCSharp.de - Member
57
Themen
329
Beiträge
Letzte Aktivität
vor 12 Jahren
Dabei seit
29.08.2004
Alter
39
Beruf
Software Engineer
Herkunft
Zürich, Schweiz
Interessen
Jesus, Programmieren
Website
Erstellt vor 13 Jahren

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

Erstellt vor 14 Jahren

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

Erstellt vor 14 Jahren

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?

Erstellt vor 14 Jahren

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

Erstellt vor 14 Jahren

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)

Erstellt vor 14 Jahren

Hallo, ist das Thema noch aktuell?

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

LG Michael

Erstellt vor 14 Jahren

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

Erstellt vor 14 Jahren

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

Erstellt vor 14 Jahren

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

Erstellt vor 14 Jahren

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