在控制台应用程序中使用表单身份验证

时间:2019-09-13 07:56:17

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

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

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

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

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

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

任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:0)

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

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

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