|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
Есть веб приложение Silverlight 4. созданно по инструкции что внизу. картинки не вставились но думаю ничего страшного. Приложение открывается только с компа на котором была создана только под пользователем под которым было создана(админ).Как разпешить доступ к нему по сети и из других учетных записей? Создание графика в Silverlight на основании данных из БД SQL Создаем приложение Silverlight 4 в Visual Studio 2010: Ставим настройки приложения Silverlight как на картинке: Появится приложение, включающее в себя два проекта: проект страницы asp.net, на которой будет размещаться график Silverlight и сам проект приложения Silverlight: Добавляем в проект сайта LINQ to SQL classes(нужен для получения данных из баз данных): Откроется окно дизайнера, в котором можно добавить таблицы для использования их потом в нашем проекте Silverlight: Создаем подключение к базе данных SQL: Для того, чтобы приложение Silverlight могло получить данные из sql добавляем в проекте сайта службу, которая и будет передавать эти данные в Silverlight (Silverlight-enabled WCF service): Заменяем код внутри класса Service на код, выводящий нужные нам данные из БД SQL: [OperationContract] List<D_Scenario> GetAllMG() { DataClassesDataContext context = new DataClassesDataContext(); var result = (from c in context.D_Scenario select c).Take(5).ToList(); return result; } В данном случае из таблицы D_Scenario выводятся 5 первых записей. Добавляем в проект сайта ссылку на библиотеку System.Data.Services.Client. Далее в приложении Silverlight создаем ссылку на службу, которую мы создали в проекте сайта: Добавляем в Silverlight проект ссылку на библиотеку: System.Windows.Controls.DataVisualization.Toolkit (нужна для построения графика). Создаем в Silverlight проекте библиотеку DifficultyLevel.cs. Копируем туда код: using System; namespace System.Windows.Controls.Samples { /// <summary> /// Describes the level of difficulty of the sample. /// </summary> public enum DifficultyLevel { /// <summary> /// Used when Sample does not need to be categorized. /// </summary> None = 0, /// <summary> /// Used for basic samples. /// </summary> Basic = 1, /// <summary> /// Used for intermediate samples. /// </summary> Intermediate = 2, /// <summary> /// Used for advanced samples. /// </summary> Advanced = 3, /// <summary> /// Used for scenario samples. /// </summary> Scenario = 4 } } Создаем в Silverlight проекте библиотеку ISampleMetadata.cs. Копируем туда код: using System; namespace System.Windows.Controls.Samples { /// <summary> /// Set of metadata needed for each sample. /// </summary> public interface ISampleMetadata { /// <summary> /// Gets the Sample name. /// </summary> string Name { get; } /// <summary> /// Gets the Sample DifficultyLevel. /// </summary> DifficultyLevel DifficultyLevel { get; } /// <summary> /// Gets the Sample category. /// </summary> string Category { get; } } } Создаем в Silverlight проекте библиотеку SampleAttribute.cs. Копируем туда код: using System; using System.ComponentModel.Composition; using System.Diagnostics; namespace System.Windows.Controls.Samples { /// <summary> /// The SampleAttribute identifies sample name and level of difficulty. /// </summary> [MetadataAttribute] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public sealed partial class SampleAttribute : ExportAttribute, ISampleMetadata { /// <summary> /// Gets the path to the sample in the Sample Browser tree. /// </summary> public string Name { get; private set; } /// <summary> /// Gets the difficulty level of the sample. /// </summary> public DifficultyLevel DifficultyLevel { get; private set; } /// <summary> /// Gets the category for this sample. /// </summary> public string Category { get; private set; } /// <summary> /// Initializes a new instance of the SampleAttribute class. /// </summary> /// <param name="name"> /// Name of the sample. /// </param> /// <param name="difficultyLevel"> /// Difficulty Level of the sample. /// </param> /// <param name="category"> /// Category of the sample. /// </param> public SampleAttribute(string name, DifficultyLevel difficultyLevel, string category) : base("Sample", typeof(FrameworkElement)) { Debug.Assert(!string.IsNullOrEmpty(name), "name should not be empty!"); Name = name; DifficultyLevel = difficultyLevel; Category = category; } } } Заменяем код внутри файла MainPage.xaml.cs на этот: using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Linq; using System.Diagnostics; using System.Windows.Media; using System.ComponentModel; using SilverlightApplication10.ServiceReference1; namespace System.Windows.Controls.Samples { [Sample("Zoom", DifficultyLevel.Scenario, "DataVisualization")] public partial class SeriesZoomSample : UserControl { private Panel chartArea; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Called by ZoomChanged.")] private Panel ChartArea { get { if (chartArea == null) { chartArea = GetLogicalChildrenBreadthFirst(ZoomChart).Where(element => element.Name.Equals("ChartArea")).FirstOrDefault() as Panel; } return chartArea; } } private ScrollViewer scrollArea; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Called by an event handler in XAML.")] private ScrollViewer ScrollArea { get { if (scrollArea == null) { scrollArea = GetLogicalChildrenBreadthFirst(ZoomChart).Where(element => element.Name.Equals("ScrollArea")).FirstOrDefault() as ScrollViewer; } return scrollArea; } } public SeriesZoomSample() { //// ServiceClient WCFService = new ServiceClient(); WCFService.GetAllMGCompleted += new EventHandler<GetAllMGCompletedEventArgs>(SetSales); WCFService.GetAllMGAsync(); //// InitializeComponent(); this.Loaded += ZoomIntoChartSample_Loaded; } private void ZoomIntoChartSample_Loaded(object sender, RoutedEventArgs e) { // force synchronous layout pass ZoomChart.UpdateLayout(); // and force initial zoom UpdateChart(0); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Called by an event handler in XAML.")] private void ZoomChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { Debug.Assert(ChartArea != null && ScrollArea != null, "Zoom should not be called before layout has occurred"); double zoom = e.NewValue; UpdateChart(zoom); } private void UpdateChart(double zoom) { ChartArea.Width = ScrollArea.ViewportWidth + (ScrollArea.ViewportWidth * zoom / 100.0); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Justification = "Called by ChartArea and ScrollArea.")] private IEnumerable<FrameworkElement> GetLogicalChildrenBreadthFirst(FrameworkElement parent) { Debug.Assert(parent != null, "The parent cannot be null."); Queue<FrameworkElement> queue = new Queue<FrameworkElement>(GetVisualChildren(parent).OfType<FrameworkElement>()); while (queue.Count > 0) { FrameworkElement element = queue.Dequeue(); yield return element; foreach (FrameworkElement visualChild in GetVisualChildren(element).OfType<FrameworkElement>()) { queue.Enqueue(visualChild); } } } private IEnumerable<DependencyObject> GetVisualChildren(DependencyObject parent) { Debug.Assert(parent != null, "The parent cannot be null."); int childCount = VisualTreeHelper.GetChildrenCount(parent); for (int counter = 0; counter < childCount; counter++) { yield return VisualTreeHelper.GetChild(parent, counter); } } private void SetSales(object sender, GetAllMGCompletedEventArgs e) { ZoomChart.DataContext= e.Result; } } } Здесь мы создавали логику приложения Silverlight. Далее меняем код в MainPage.xaml на этот: <UserControl x:Class="System.Windows.Controls.Samples.SeriesZoomSample" xmlns=" http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=" http://schemas.microsoft.com/winfx/2006/xaml" xmlns:visualizationToolkit="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit" xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" xmlns:chartingPrimitivesToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit"> <UserControl.Resources> <ControlTemplate TargetType="chartingToolkit:Chart" x:Key="ZoomChartTemplate"> <Border Padding="5"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <visualizationToolkit:Title/> <Grid Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <ScrollViewer x:Name="ScrollArea" BorderThickness="0" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Hidden"> <chartingPrimitivesToolkit:EdgePanel x:Name="ChartArea" Style="{TemplateBinding ChartAreaStyle}"> <Grid Canvas.ZIndex="-1" Style="{TemplateBinding PlotAreaStyle}" /> <Border Canvas.ZIndex="1" BorderBrush="#FF919191" BorderThickness="1" /> </chartingPrimitivesToolkit:EdgePanel> </ScrollViewer> </Grid> </Grid> </Border> </ControlTemplate> </UserControl.Resources> <StackPanel Background="White"> <ContentControl Content="Zooming a Series"/> <chartingToolkit:Chart HorizontalAlignment="Left" Width="450" Height="320" Template="{StaticResource ZoomChartTemplate}" x:Name="ZoomChart" Title="Zoomable"> <chartingToolkit:LineSeries Title="Widget Popularity" ItemsSource="{Binding}" IndependentValuePath="Name" DependentValuePath="lvlPosition" /> <chartingToolkit:LineSeries Title="Gizmo Popularity" ItemsSource="{Binding}" IndependentValuePath="Name" DependentValuePath="OwnerId" /> </chartingToolkit:Chart> <StackPanel Margin="5,10,0,0" Orientation="Horizontal" > <TextBlock Text="Zoom:" /> <Slider Margin="5,0,0,0" Width="250" Minimum="0" Maximum="500" ValueChanged="ZoomChanged" /> </StackPanel> </StackPanel> </UserControl> Здесь мы описывали, как будет выглядеть готовый график. Компилируем проект. В итоге у нас получился линейный график: ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 10:23 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
Che0, выложите тестовый солюшен. и, скажите, какой веб-сервер используете? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 10:34 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
enigmatic, что такое текстовый солюшен? Если это код то с каких именно файлов надо, а какие стандартные и приводить код из них нету смысла? вот его урл http://portal:49200/SilverlightApplication10.Web/SilverlightApplication10TestPage.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 10:45 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 10:51 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
Che0, тестовый солюшен - то, что можно скачать и запустить у себя для проверки работоспособности. Т.е. исходный код вашего приложения в виде решения вижуал студии в архиве. урл вашего приожения локален. вебсервер разработчика, который идет вместе со студией, не может принимать подключения по локальной сети, поэтому если используете его, то имейте это в виду. Какой у вас вебсервер? Раз приложение у вас открывается на том компе, на котором было создано, то скорее всего дело в вебсервере, а не в самом приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:09 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
enigmatic, а как узнать какой стоит веб-сервер? комп не мой ведь ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:25 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
В параметрах запуска стоит использовать веб-сервис по умолчанию ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:33 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
вот проект http://ifolder.ru/25377254 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 11:59 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
Che0, Какой веб-сервер стоит можно спросить у админа вот этого сервера: автор http://portal/ авторВ параметрах запуска стоит использовать веб-сервис по умолчанию Вебсервисы это немного другое. Вообще, я так понял, вы со своего компа обращаетесь к http://portal:49200/SilverlightApplication10.Web/SilverlightApplication10TestPage.aspx и у вас всё работает, но не работает из под других учетных записей и с других компов. Видимо, вам надо пнуть админа этого вебсервера, чтобы он разрешил другим пользователям доступ по сети. И что выводит при открытии приложения из под других пользователей? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 12:23 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
enigmatic, я через удаленный доступ работаю на нем. Веб-СерВЕР по умолчанию. это описка была. Пишет что страница не найдена. , ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 12:41 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
Che0, У вас по сети из браузера точно работает http://portal:49200/SilverlightApplication10.Web/SilverlightApplication10TestPage.aspx? Вы точно не локально обращаетесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 13:09 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
у меня по сети не работает. Работает только если локальное обращение ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 13:40 |
|
веб приложение Silverlight 4 доступ по сети
|
|||
---|---|---|---|
#18+
Che0, Скорее всего вы пытаетесь обратиться к девелоперскому асп.нет серверу, он у вас установлен вместе со студией, а он не принимает соединения по сети, только локально. Чтобы дать возможность другим пользователям работать с приложением, вам нужно разместить его на каком-то другом веб-сервере и настроить его для работы с .xap-файлами (это, насколько я знаю, делается настройкой mime типов на веб-сервере, веб-сервер должен понимать, что xap - это сильверлайт приложение). Опишите, на всякий случай, где вы создаете приложение, где и как вы его размещаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2011, 14:16 |
|
|
start [/forum/topic.php?fid=21&msg=37411145&tid=1442179]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 456ms |
0 / 0 |