Asp.net core 1.1 首发项目踩坑记录 2016-12-06
2016-12-06 16:33 LYYYYYYY 阅读(276) 评论(0) 收藏 举报坑1:发布到Docker环境部署时,容器外部不能访问,容器内部curl: http://0.0.0.0:5000响应正常
错误信息:
原因:项目发布core项目默认监听的是 http://localhost:5000/,导致外部无法访问,查了很多资料,发现在容器里localhost是一个回路地址。然后就......没有然后了!
解决: 程序入口加入指定监听地址 .UseUrls("http://0.0.0.0:5080"),重新发布打包就ok了

坑2:Token认证令牌生成问题:new RSACryptoServiceProvider(2048) 在win下面正常使用生成token无问题,发布到Docker里面,会抛出运行时异常 ;
using (var rsa = new RSACryptoServiceProvider(2048))
{
return rsa.ExportParameters(true);
}
错误信息:System.PlatformNotSupportedException: Operation is not supported on this platform. at System.Security.Cryptography.RSACryptoServiceProvider..ctor()

原因:错误源头在RSACryptoServiceProvider构造函数设置的2048大小那里,具体错误根源未知。
解决:采用var rsa = RSA.Create()替换就行了
using (var rsa = RSA.Create())
{
return rsa.ExportParameters(true);
}
坑3: EFcore1.0+MysqlCore 没有实现Linq 的 Take 方法,使用就报错;EFCore1.1+MysqlCore 依然无法使用,运行提示缺少DispalyName方法,但是这个方法在1.0是存在的,1.1就拜拜了。。。。。。
坑4:Asp.net Core 文件路径问题 win下面 “/” or “\” 都是可用的 ;如下代码
Case1: .AddXmlFile(@"SqlMap/sql_map.xml", optional: true, reloadOnChange: true)
Case2: .AddXmlFile(@"SqlMap\sql_map.xml", optional: true, reloadOnChange: true)
因为是跨平台的应用,目录分隔符j在windows 下是 "\", Mac OS and Linux 下是 "/" ,如果以case2发布到 docker容器里,就呵呵哒了,会提示找不到对应的文件路径。必须Case1来书写文件分隔符;
还有各种小坑.................后面在记录下来!
浙公网安备 33010602011771号