我的ASP.Net应用程序的几页使用WIF直接连接到另一个服务.WIF只是在这里取得进展,虽然它安装在测试和生产服务器上,但每当新的程序员或测试人员获得最新版本并碰巧在他们的机器上没有安装WIF运行时的情况下点击这些页面时,他就会获得YSOD和关于找不到Microsoft.IdentityModel的错误...他们从未阅读过,而是触发IM告诉我我的应用程序已损坏.
我想检测是否已安装WIF运行时并显示每条有用的错误消息,如果没有则链接到下载页面.我不想检查特定的.dll路径,因为这可能会改变......并且3.5和4.0已经有不同的路径.
有没有最好的方法来检测是否安装了WIF运行时?
(显然在一个没有引用它的页面中......如果没有安装它将无法正确显示)
编辑
看起来WIF包含在4.5的框架中,因此3.5/4.0的特定方法可以.没有必要面向未来.
我会尝试从 GAC 加载 Microsoft.IdentityModel.dll 到 try/catch 块内,或者更好,只需捕获没有 WIF 运行时的用户当前正在获取的特定异常,然后使用它将用户重定向到特定错误页面/信息。
要回答您的确切问题 - 有没有办法检测是否存在正确的 WIF 安装包:如果您的应用程序可以访问注册表(至少以只读模式),还可以检查是否存在 Windows Identity Foundation 相关项目出现在 SOFTWARE\Microsoft\Windows Identity Foundation 中(以及 64 位系统的关联 Wow6432Node)。