在iis上部署asp mvc5 程序

碰到的问题

1.

第一个问题出现:

HTTP Error 500.19 - Internal Server Error 
配置错误: 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。
出现这个错误是因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。要取消锁定可以运行命令行 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 。其中的 handlers 是错误信息中红字显示的节点名称。
如果modules也被锁定,可以运行%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

注意:cmd.exe要以管理员身份启动,在c:\windows\system32下找到cmd.exe,右键管理员启动,输入上面的命令即可。

转自http://blog.csdn.net/bdmh/article/details/8088487

2.然后出现了

Post MVC on IIS 7 error: 403.14-Forbidden Web server is configured to not list the contents of this directory

Toss for a long time, prompt solution is:

  • If you do not wish to enable directory browsing, make sure you have configured the default document and the file exists.
  • Use IIS Manager to enable directory browsing.
    1. Open the IIS Manager.
    2. In the "function" view, double-click the "directory browsing".
    3. In the "directory browse" page in the "actions" pane, click "enable".
  • Confirm the site or application's configuration/system.webServer/directoryBrowse@enabled property is set to True in the configuration file.

Under the reform, found running interfaces in a Web page into a directory structure, and later found the profile configuration section of the Web.config configuration file, the sites can be used to record.

<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

To set the <modules> value to true, directory browsing enabled or disabled are not affected.

转自:http://www.cnblogs.com/shanyou/archive/2012/07/01/2572273.html

3.然后出现了

还是不行,百度又没有好的回答。

最后发现好像我的iis 没有配置好,连asp.net一节都没有,在程序管理里重新配置,然后重启,ok了。

配置这篇文章http://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server

貌似 sql server express 版本没法用。然后自动创建的数据库版本为706,也就是要sql server 2012才能打开。
走了很多的弯路,数据库终于没问题了。总结下,
1.用vs 2013 code first 自动创建的mdf没法附加到sql server 2008,2008版本太低了。于是又下载安装了sqlserver 2012
2.可能是因为安装了sql server express 等的愿意 ,默认 1433端口 telnet 不通,在2012里看到默认采用了动态端口。这么高大上的东西,没耐心去研究,去掉动态端口,从新采用tcp端口 1433,重启sqlserver 。telnet 通了。
3.修改web.config中的链接字符串,不过还要在dbcontext上下文中改下。一直没改对,都是默认在app-data下创建mdf文件。其实很简单。base()的参数是连接字符串即可。
如下
public class cmsContext:DbContext
    {
        public cmsContext() : base(ConfigurationManager.ConnectionStrings["tenhours.cmsContext"].ToString()) { }
        public DbSet<Course> Courses { get; set; }
web.config中代码如下:
<connectionStrings>
      
    <add name="tenhours.cmsContext" connectionString="Server=192.168.11.2\sqlserver2012;Database=tenhours.DAL.cmsContext;User ID=sa;Password=bright623"  providerName="System.Data.SqlClient" />
  </connectionStrings>
做的过程中不小心把默认的defaultconnection 删掉了,那个是默认提供的登录模块用的。先不管了,后面配置用户模块的时候再说吧。
下面的问题是上传文件大小限制的错误
[HttpException (0x80004005): 超过了最大请求长度。]

处理方法是在web.config中配置。前面搜索过很多坑爹的解决方法。叹。
 <system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" maxRequestLength="9000"  executionTimeout="3600" />
   
  </system.web>
只要配置下httpruntime 的maxRequestlenght 就可以了。9000代码9000kb,如果希望最大允许30M 则设置为30*1024即可。或者30000近似下。
同时也需要设置下httpruntime 的timeout属性。
iis默认的用户,没有对目录的操作权限。好像没有aspnet用户。不知道又哪里错了,查了下,aspnet用户被替换成network service了。不过iis里匿名链接用的不是network service用户,所以需要改下。把网站的身份验证选择为应用程序池标识。然后修改对应应用程序池的内置账户为network service,在应用程序池的高级设置 进程模型 标识 项
具体请参见



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值