代码改变世界

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来书写文件分隔符;

 

还有各种小坑.................后面在记录下来!