使用Visual Studio 2015 编写 Asp.Net 5 应用遇到的几个坑

从asp.net 5 beta 6 一直到现在的asp.net rc1,一路使用下来,碰到不少坑。陆续记录如下。

一,发布

1,服务器端和客户端都应安装web deploy,版本目前为3.6;

2,服务器端应安装httpplatformhandler,版本目前为1.2,版本1.0不起作用;

3,服务器端开启web management服务;

4,服务器端目录结构应该如下:

  • siteName
    • approot
    • logs
    • wwwroot

  然后,在IIS里,将站点目录指向wwwroot。不按这样安排目录,可能会使静态文件,比如js,css,图片等无法访问。当然,你可以在某些配置文件里调整,暂不表。

 

5,SSL证书问题,由于web depoly 使用https链接,如果不使用公开有效的证书,在visual studio 2015发布asp.net 5 中,会被不允许。以后版本怎样暂不可知。

解决办法:a,换有效证书;b,在你的工程下,找到发布文件Default Settings.pubxml,添加<AllowUntrustedCertificate>true</AllowUntrustedCertificate>,

然后,修改Default Settings-publish.ps1里的版本号为最新版本,$publishModuleVersion = '1.0.2-beta2',具体版本请前往github.com/aspnet下的vsweb-publish中查看。

6,启动visual studio 2015发布,而不是使用dnu publish 手动发布时,有时候会收到“文件名或目录路径太长,超过260”这一错误,而且以乱码显示。

解决办法:a,暂没有找到在那个配置文件里修改,所以,采用手工dnu publish,制定较短目录,然后手工webdeploy.exe 发布;b,删除环境变量下用户自定义变量TEMP与TMP,如果还是太长,那你的工程名真的就很长了。

 

7,发布后,dnx起不来,在cmd中运行web.cmd,出现 System.InvalidOperationException: No service for type 'Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment' has been registered.

这可能是因为发布时,没有正确选择dnx runtime版本

二,npm

1,visual studio 2015 采用 node npm来管理node包,在第一次,或者从源代码里首次获取工程后,会自动使用npm来获取依赖包,比如gulp等等。

但国内网络太烂,有时候会莫名终端,导致发布或者编译时,无法执行project.json中的prepublish中的命令,这时,关闭解决方案,删除目录下的node_modules,重新开启解决方案,等待完整下载,或者挂个vpn。

 

posted @ 2015-10-25 18:08  YUZHAO-BAI  阅读(271)  评论(1编辑  收藏  举报