2010-02-07 80 views
2

我想使用WCF服务的Windows窗体,并通过在WCF服务中使用aspNetCompatibilityEnabled = true来利用asp.net的预构建身份验证。aspnetCompatibility WCF和WinForm

是否有任何模块或预构建的程序集可以将ASP.NET功能添加到Windows窗体应用程序?据我所知,这个功能不是内置在Windows窗体中,并且不能被利用。

回答

1

尽管在桌面应用程序中托管asp.net运行时当然是可能的,但这需要一些管道工作,您需要手动完成。如果你想使用会员提供商,你还必须处理证书。

我会建议你可以:

  1. 主机,那么它在IIS或WAS,这取决于你的系统
  2. 主机,那么它在卡西尼号,你可以手动在命令行或编程
  3. 启动/停止上
  4. 通过创建一个ServiceHost实例并手动打开它,将其托管在Windows窗体应用程序中。
+0

是否有任何额外的文档可以指向我,以便在桌面应用程序中承载aspnet运行时?我相信运行时提供了一种方式来获得您在登录时持有的某种令牌,因此您不必每次都将您的用户名和密码传递给您的服务。就像登录到aspnet web应用程序或silverlight应用程序一样。 – Watson 2010-02-08 17:15:15

2

对于此场景,我不知道任何可用的开箱即用功能。

整个ASP.NET成员资格和角色系统都基于一个名为“aspnetdb”的已知SQL Server数据库,该数据库具有一些用于最常用的功能的表和存储过程 - 所以确实没有任何东西阻止您构建Winforms基于数据库的前端。

我不知道是否有任何关于ASP.NET成员表和例程的官方文档 - 但据我记得,它们都是相当直接的重新设计和使用 - 所以继续建立该系统你的!

如果谷歌或冰吧,你甚至可以找到人谁做到了这一点本身有好几篇文章和博客文章:

+0

非常感谢。 – Watson 2010-02-08 18:09:46

0

这这是所有可能的,因为我已经用你描述的场景解决了一个解决方案。这完全取决于配置。我的建议是在这种情况下遵循此CodePlex Checklist。它包含配置应用程序的分步指南。它展示了如何设置你的用户存储(数据库),客户端认证,设置IIS,安全等。

+0

http://www.zamd.net/2009/03/05/FlowingFormsAuthenticationCookieToWCF.aspx 我还发现此链接有帮助 – Watson 2010-02-08 19:10:12

0

如果你坚持在Windows窗体应用中托管http运行时,最简单的方法是获取源代码代码cassini for .net 3.5。真的很直接使用。这是一个winforms应用程序。 Cassini是Visual Studio的开发服务器。

我亲自在一个网站上测试了它,并设置了会员资格并完美运作。 如果您需要它处理来自本地主机以外的请求,您需要将IPAddress.Loopback更改为Server.cs中的IPAddress.Any,如注释中所指出的那样。