Open neemo26 opened 10 years ago
使用“Silverlight 业务应用程序”模板
WCF RIA Services 在本演练中,您将学习如何通过使用“Silverlight 业务应用程序”模板创建 WCF RIA Services 解决方案。本演练演示如何创建该应用程序,以及如何在尽量少地执行额外工作的情况下利用该模板提供的若干功能。其中还演示了如何从 Forms 身份验证(默认身份验证模式)切换到 Windows 身份验证。 “Silverlight 业务应用程序”模板创建的项目中会自动包括您通常在业务应用程序中需要的许多功能,如用于帮助用户登录和注册新用户的控件。该模板创建的项目还设置为使用 Silverlight 导航,这意味着您可以轻松地通过添加 Silverlight 新页来执行其他功能。 默认情况下,“Silverlight 业务应用程序”模板支持身份验证、角色和配置文件。
该模板使用的默认身份验证模式是 Forms 身份验证,但您只需通过更改两个配置值即可将身份验证模式更改为 Windows 身份验证。此处提供了用于上述模式更改的过程。 有关如何使用 RIA Services 应用程序中支持的用于身份验证、角色和配置文件的服务的详细信息,请参见身份验证、角色和配置文件一节中的主题。 必备条件 本演练和 WCF RIA Services 文档中提供的其他演练除了要求正确安装和配置 WCF RIA Services 和 WCF RIA Services 工具包外,还要求正确安装和配置几个必备程序,如 Visual Studio 2010 以及 Silverlight Developer Runtime 和 SDK。它们还要求安装和配置具有高级服务的 SQL Server 2008 R2 Express 以及安装 AdventureWorks OLTP 和 LT 数据库。 WCF RIA Services 的必备条件节点中的主题提供有关如何满足这些前提条件的详细说明。在执行本演练前请按照那里提供的说明操作,以确保在执行本 RIA Services 演练时遇到的问题最少。
在 Visual Studio 2010 中,依次选择“文件”、“新建”和“项目”。 将显示“新建项目”对话框。 选择“Silverlight”项目类型。 选择“Silverlight 业务应用程序”模板并将应用程序命名为 ExampleBusinessApplication。
单击“确定”。 请注意所创建的项目结构。Silverlight 客户端项目在 Views 文件夹中包括 Silverlight 页。这些页可用于帮助用户登录和注册新用户。 在“解决方案资源管理器”中,右击 Silverlight 客户端项目,然后选择“属性”。 将显示项目设计器的“Silverlight”选项卡。请注意在该选项卡的底部,客户端与服务器项目之间存在一个 RIA Services 链接。 生成并运行 (F5) 该应用程序。 该应用程序的主页将出现在您的浏览器中。
单击“登录”链接。 这将显示“登录”对话框。
单击“立即注册”链接。 将显示“注册”对话框。
添加值以注册新用户。
单击“确定”创建新用户。 请注意,您现在将以您注册的用户身份登录。 关闭浏览器。
使用 Windows 身份验证 在服务器项目中,打开 Web.config 文件。 在身份验证元素中,将 mode 属性设置为 Windows 并删除 forms 元素。
在客户端项目中,打开 App.xaml 文件的代码隐藏文件(App.xaml.cs 或 App.xaml.vb)。 在构造函数中,对将 Authentication 属性设置为 WindowsAuthentication 的行取消注释,并注释掉将该属性设置为 FormsAuthentication 的行。 VB Public Sub New() InitializeComponent()
Dim webContext As New WebContext()
'webContext.Authentication = New FormsAuthentication()
webContext.Authentication = New WindowsAuthentication()
Me.ApplicationLifetimeObjects.Add(webContext)
End Sub
CS public App() { InitializeComponent();
WebContext webContext = new WebContext();
//webContext.Authentication = new FormsAuthentication();
webContext.Authentication = new WindowsAuthentication();
this.ApplicationLifetimeObjects.Add(webContext);
}
生成并运行 (F5) 该应用程序。 请注意您现在将使用您的 Windows 帐户登录。Silverlight 业务应用程序会将代码包含在尝试加载用户进行 Windows 身份验证的 Application_Startup 方法中。 另请参见 任务 演练:在 Silverlight 业务应用程序中显示数据 演练:在 Silverlight 业务应用程序中显示相关数据
(ServletHandler.java:1568) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:164) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1539) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1556) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1548) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:544) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1110) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1044) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:459) at org.eclipse.jetty.server.HttpChannel.handle