【问题标题】:Using forms authentication in console application在控制台应用程序中使用表单身份验证
【发布时间】:2019-09-13 07:56:17
【问题描述】:

我有一个稍微奇怪的情况,我有一个 C# 框架 4.6.2 控制台应用程序来运行使用共享库进行身份验证的后台任务。

身份验证在这里很重要,因为存在需要 cookie 的下游 HTTP API 依赖项。

共享身份验证项目使用FormsAuthentication.Encrypt(ticket) 创建cookie,但是FormsAuthentication 方法要求您在Web.config 文件中进行适当的设置。

在我的控制台应用程序中,我只有一个 app.config 文件,如果我添加 <authentication><machinekey> 元素,它们似乎不会被 FormsAuthentication 拾取。

不幸的是,我无法对该堆栈进行任何大规模更改,因为它是一个具有许多依赖项的大型遗留应用程序,所有这些都假设表单身份验证将“正常工作”。

非常感谢任何想法。

【问题讨论】:

  • 你能提供一些执行实际连接的代码吗?您是否尝试过调试它并调查涉及的各种对象?也许您可以通过编程方式添加/设置缺失值,而不是依赖任何配置文件。

标签: c# asp.net-mvc configuration console-application


【解决方案1】:

所以我误解了这个问题的原因。我可以确认表单身份验证设置确实取自app.config,但是问题在于机器密钥元素的默认兼容模式。

阅读this 文章后,我意识到控制台应用程序默认为Framework20SP1,但另一端的Web API 默认为Framework45

我会在此处留下这个答案,以防其他人遇到类似问题 - 如果有,请检查每个服务中使用的兼容模式。如果(像我一样)您需要覆盖默认值以便它们在服务之间匹配,那么只需将 compatibilityMode="Framework45" 属性添加到 <machineKey> 元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2012-04-19
    相关资源
    最近更新 更多