①将项目打包发布到IIS上,浏览器访问没有显示正常页面,显示成目录(Directory)的形式
一般来说是ASP.NET未注册到IIS中的原因,命令行执行【%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir】,进行注册即可
问题可参考http://stackoverflow.com/questions/2374957/asp-net-mvc-on-iis-7-5
②Log4net的使用(项目是MVC3结构,以此为例)
首先http://logging.apache.org/log4net/下载log4net的包,并导入到工程当中
然后web.config文件中加入以下内容:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
<file value="D:\web.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="30" />
<maximumFileSize value="50MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
注意:上段配置得加到config文件内的最上端,否则可能会有错误
最后就是对使用此Log工具的说明了,
在Global.asax的Application_Start方法中加入
log4net.Config.DOMConfigurator.Configure();
或者,在项目的AssemblyInfo.cs文件中或使用到的类前面加入声明:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4NetDemo
具体的配置解释可参照这个博客http://blog.csdn.net/zhoufoxcn/article/details/2220533
③使用了log4net却无法生成log文件
可能是文件夹的权限问题,给目标文件夹加上 写权限即可(一般就是本用户下的权限)
④ASP.NET发布到IIS 出现Access is denied的错误
这个问题比较恶心,现象为:
环境:IIS7.5 + .NET4.0 + Windows Server 2008 客户提供的server环境,在开发环境中,前期发布并未出现问题,频繁发布后出现“コンパイル エラー メッセージ: CS0016: 出力ファイル 'C:Windows\Microsoft.NET\Framework64v4.0.30319\Temporary ASP.NET Files\root\3b10b4032a5c4767\App_global.asax.cio01c3s.dll' に書き込めませんでした -- 'アクセスが拒否されました。 ' ”的问题,而同样地发布包在本机和其他server上(RC环境,很“干净”,未频繁发布)上就不会出现。
这个还是权限问题!
就是给C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files和C:\Windows\Temp这个两个文件夹加上写权限,NET WORK、IIS USER用户加上即可,不过一般自己所在用户权限加上就行。但是要注意的是,确认环境变量中 %TEMP% 指定的具体地址,这个变量是指向真正的"C:\Windows\Temp",之前一直没找对就是因为客户server上自定义了TEMP的路径,权限一直加错了地方。
为什么TEMP目录要加权限?官网有这么句“コンパイラは、一時的な ASP.NET ファイル フォルダーにファイルをコピーする前に、 TEMPおよびTMP変数をポイントするフォルダー内の一時ファイルを生成します。”供参考
另外,.net的web项目,web.config文件中<compilation>节点可以指定临时编译文件目录,形式类似如下: <compilation tempdirectory="D:\tem_file\" targetframework="4.0">***</compilation>
暂时这么多,以后遇到继续补充...