日期:2014-05-16  浏览次数:21431 次

Win7 安装 IIS 7.5 及部署 .NET 程序到 IIS 的内容杂记

一、如果原先安装的 Visual Studio 没有安装 .NET Web Developer (也就是开发 ASP.NET 网站的组件),在安装了 Visual Studio SP1 之后,先重新添加  .NET Web Developer,添加 Visual Studio 组件时会报错。需要先卸载 SP1,添加 .NET Web Developer ,重新升级 SP1。(这个步骤很费时,可以出去抽两根烟。。。)


二、Win7 下安装 IIS 7.5 还算是比较方便的,只是被系统隐藏的比较深罢了。在这里:




这里比较重要的是一定要选中这里的 “可承载的 Web 核心”,不然安装 IIS 成功之后,打开全部都是空白页。 

参考:http://www.windows7en.com/Win7Down/12462.html


三、对于 .NET 4.0 以上开发的程序,需要在 IIS 配置中,选择好 .NET 框架版本 对应的 “应用程序池”。


四、如果出现下面的错误:

image

解决办法是:以管理员身份重新注册 ASP.NET 4.0 框架,命令是:

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
参考:http://hi.baidu.com/love_1210/item/1971ce45c4bcd8e6bdf451dd


五、在编写 .NET 网站时,有个 “App_Code” 文件夹,不能改名!!


六、如果在发布网站时间选择了


在发布网站之后,可能会出现:

分析器错误信息: 未能创建类型“Service1”。

源错误:
行 1: 

源文件: /WEB/Service.asmx 行: 1

解决办法是把 Visual Studio 发布网站生成的 "bin" 目录,放到 IIS 的根目录下

参考:http://blog.csdn.net/zhpch1984/article/details/6837299


七、上述步骤情况下,用 Visual Studio 预编译站点的 .cs 文件,会被编译成 App_Code.dll 放到 bin 目录下。如果网站项目较大,生成的 .dll 文件互相覆盖,就没法玩了。解决的办法有两个:

  1、在 Visual Studio 工程中,在 "App_Code" 文件夹下建子目录,比如名为 “PkuStudentInfo”,把对应的 .cs 文件归到该目录下。然后在 web.config 文件中增加:

<configuration>
   <system.web>
      <compilation>
         <codeSubDirectories>
           <add directoryName="PkuStudentInfo"/>
         </codeSubDirectories>
      </compilation>
   </system.web>
</configuration>
然后 Visual Studio 发布网站的时候就会生成 App_SubCode_PkuStudentInfo.dll,相当于按模块归类了。但是这样也有不好的地方:在 IIS 访问的时候,又会提示

“不能在该应用程序级别之下定义元素 codeSubDirectories”

解决的办法就是在 Visual Studio 生成后,最终发布的 web.config 文件中,删除 “codeSubDirectories” 节点及其子节点。

参考:http://www.cnblogs.com/qiantuwuliang/archive/2009/03/06/1404643.html

参考:http://msdn.microsoft.com/zh-cn/library/exchange/54dwfbb7


  2、用微软官方的工具 ILMerge,对多个 assembly 进行合并(单个即可改名),下载地址是:

http://www.microsoft.com/en-us/download/details.aspx?id=17630

参考:http://bbs.csdn.net/topics/100025265


八、启用 Visual Studio 预编译后,编译成的 .dll 文件,可以用

HttpRuntime.AppDomainAppPath
来获取  .dll 文件所在的目录。

可以用

System.AppDomain.CurrentDomain.BaseDirectory
来获取 Web 的当前工作目录。

参考:h