【ids4】三天解决一个Bug,心累啊,IdentityServer4部署到IIS,跨域问题?

起因

最近做了一个小项目,公司的信息管理系统,用了一个刚学习的模式来做,IdentityServer4+API+Blazor

开发调试过程中很顺利,三天搞定了,但是在部署过程中,却遇到了很多问题,又弄了大概三天,血一样的教训,记录一下

问题

网站部署的环境搭建就不详细说了

在网站登录时,报错No 'Access-Control-Allow-Origin' header

Access to XMLHttpRequest at 'http://192.168.20.6:5601/.well-known/openid-configuration' from origin 'http://192.168.20.6:5603' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

报了一个跨域问题

跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

后面我就按照网上的说法,写了各种跨域的设置,但是还是报错

突破

由于是一个小项目,就没有写日志记录,后面迫不得已还是加一个日志记录,再部署到IIS中

于是终于在日志中发现了一个报错:找不到对象(在一堆英文中发现的)

首先是报Host terminated unexpectedly.(主机意外终止),下面才报找不到对象

仔细研究日志,发现是中Startup的 builder.AddDeveloperSigningCredential();中报错

Host terminated unexpectedly.
Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: 找不到对象。
   at System.Security.Cryptography.CngKeyLite.GenerateNewExportableKey(String algorithm, Int32 keySize)
   at System.Security.Cryptography.RSAImplementation.RSACng.GetDuplicatedKeyHandle()
   at System.Security.Cryptography.RSAImplementation.RSACng.ExportKeyBlob(Boolean includePrivateParameters)
   at System.Security.Cryptography.RSAImplementation.RSACng.ExportParameters(Boolean includePrivateParameters)
   at Microsoft.IdentityModel.Tokens.JsonWebKeyConverter.ConvertFromRSASecurityKey(RsaSecurityKey key)
   at Microsoft.Extensions.DependencyInjection.IdentityServerBuilderExtensionsCrypto.AddDeveloperSigningCredential(IIdentityServerBuilder builder, Boolean persistKey, String filename, RsaSigningAlgorithm signingAlgorithm)
   at Dartmon.MIS.Ids.Startup.ConfigureServices(IServiceCollection services) in E:\xxx\Startup.cs:line 86

AddDeveloperSigningCredential这个方法是设置临时的签名凭证,在项目首次启动时,会自动创建一个开发人员签名密钥,文件为tempkey.jwk,如果文件不存在,则会重新创建

解决

于是,我尝试着把tempkey.jwk文件放到服务器上,放到部署目录,重新启动网站

于是....终于可以了

太激动了...弄了三天...就因为缺失一个文件

三天的部署,也不完全是缺失文件的问题,也有IIS环境的问题,Blazor部署的问题,后面计划写篇关于Blazor部署问题的文章

最终解决方案

最后说下解决方案,在部署的时候不能总靠复制tempkey.jwk文件,万一哪天忘了,就不得了了

看看这文件的属性

复制到输出目录,原来的设置是不复制,改为始终复制或如果较新则复制即可,这样每次发布时,文件就会自动复制到发布文件夹

完成WC...

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreAmbWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值