首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >‘'Jwt’不存在于名称空间System.IdentityModel.Tokens中-仅在生产中

‘'Jwt’不存在于名称空间System.IdentityModel.Tokens中-仅在生产中
EN

Stack Overflow用户
提问于 2018-02-12 03:00:50
回答 1查看 5.8K关注 0票数 2

我正在尝试启动一个website模块进入我的果园CMS网站。为了安全起见,web必须使用JWT。

我制作了这样一个模块。当在我的开发环境中脱机构建和编译时,一切都是成功的。我能够查询API并获得一些结果。这里证明了API在我的开发环境邮递员反应截图中返回一个JWT。

这很好,而且很好。但是,当我试图将模块上传到我现有的网站(建立在Orchard CMS上)时,我会得到一个错误:

代码语言:javascript
运行
复制
<directory>/JwtManager.cs(4): error CS0234: The type or namespace name 'Jwt' does not exist in the namespace 'System.IdentityModel.Tokens' (are you missing an assembly reference?)

引用程序集肯定包含在我正在创建的nuget包中(在bin目录中可见)。我在StackOverflow上看到了与JWT的5.0.0.0+组装版本有关的其他问题,比如这里 --然而,这些问题都没有出现相同的错误。此外,我已经确认我的代码正在使用正确的对象来构建例如。SigningCredentials和SymmetricSecurityKey,所以我不认为这些答案与我的特殊情况有关。

我不太熟悉使用引用程序集来处理这些问题,所以如果这是一个简单的修复,我很抱歉。以下是我尝试过的工作:

  1. 在构建nuget包之前,在我的项目中将System.IdentityModel.Tokens.Jwt“特定版本”属性设置为true。同样的错误持续存在。
  2. 修改Web.Config以在旧版本的System.IdentityModel.Tokens.Jwt程序集上使用bindingRedirect。同样的错误持续存在(此二进制文件的旧版本正在解决方案中的另一个项目中使用)。
  3. 删除using System.IdentityModel.Tokens.Jwt;语句,并使用语句强烈定义依赖于此语句的任何对象。有趣的是,在这样做的过程中,我并没有收到eg声明中的错误。System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler(); -不过,我在HttpActionResult实现中的行public string ReasonPhrase { get; }上确实收到了一个错误must declare a body because it is not marked abstract or extern.

上面第3点让我相信,ASP.Net版本可能存在一些问题,导致了所有这些奇怪之处(因为上面只是一个简单的属性.),但我真的不确定。我确保了目标框架在我的开发环境和在线环境中都是相同的(.NET框架4.5.2)。

对我来说,所有这些都没有意义,因为在我的开发环境中,一切都很好,开发环境是建立在与我的在线环境相同的OrchardCMS版本之上的。

我在项目中使用的引用程序集:

  • System.IdentityModel.Tokens.Jwt - v5.1.5.0
  • Microsoft.IdentityModel.Tokens - v5.1.5.0

在这件事上的任何帮助都是非常感谢的--这个小小的障碍在很大程度上阻碍了我的进步,而我似乎没有做任何事情来解决这个问题!

附加信息:I应该澄清,这个问题中提到的“生产”环境并不维护我们源代码的版本。但是,我已经创建了一个单独的测试环境,它反映了我们的生产环境,并在那里安装了源代码。

需要注意的是,通过Orchard管理仪表板安装NuGet包是加载代码的机制。本问题中以前所有对联机环境的引用都是指试图加载此代码的过程。

当我实际将包作为项目添加到我们的解决方案中时,问题就不会发生,而且我们的web实现可以在我们的测试环境中工作。

但是,这不是一个解决方案,因为我们没有也不会在我们的生产环境中维护解决方案源的版本。然而,它可以为一个更有知识的人提供一些线索,让他们知道正在发生什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-12 23:13:15

根据果园模块装载机文档 -动态编译仍然在我们的在线环境中启用。我们的参考库有一个问题,导致无法编译服务器端。我相信VS在某种程度上掩盖了这个问题,并且允许编译仍然脱机进行,因为我们的解决方案确实包含了正确的引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48738977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档