将asp.net 4.0 MVC 3站点部署到IIS 7时出现403禁止访问错误

3
我有一个正在运行的EC2实例,URL为NoWeatherSurprises.com。我将DNS指向了这里,并在IIS 7中设置了一个新站点并将其指向一个文件夹。我使用Visual Studios Web Developer 2010 express发布到此文件夹。现在它已经具备了二进制文件等资源。
然而,如果我访问NoWeatherSurprises.com,我会看到欢迎使用IIS 7的界面。我期望能够访问我的应用程序。如果我访问http://noweathersurprises.com/weather/ [weather是我在wwwroot下发布的文件夹],我会收到403禁止访问的错误消息。我不知道原因,猜测可能是它试图列出目录或其他什么东西,而不是启动我的MVC应用程序。
总结来说,有两个问题: 1. 它没有直接将域名指向文件夹,我需要添加/weather。 2. 我收到403禁止访问的错误消息,而不是我的主页控制器的索引操作结果。

我是IIS 7的新手,之前一直在使用IIS 6而且设置起来少有麻烦,但我怀疑这是我的问题,可能是我漏掉了什么。

非常感谢您提供的任何帮助。


您在IIS 7中设置的站点是否已设置为使用ASP.NET 4.0,并且已配置为使用集成(而非经典)管道?听起来,IIS不知道使用MVC路由启动您的站点,并正在寻找默认文档(index.html、default.aspx),但找不到它(这是不应该的-您正在使用MVC!) - Tommy
1个回答

0
你将你的网站物理路径设置为什么了吗?
在IIS管理器的右侧,有一个“基本设置”选项,你可以看到它指向哪里。
在你检查完这个之后,确保你的网站应用程序池是针对v4.0框架的。同样,在IIS管理器中查找应用程序池,找到你的网站并确保框架版本为4.0(集成)。

C:\inetpub\wwwroot\weather 是我发布到的正确目录所对应的物理路径。 连接设置为应用程序用户。我进行了测试设置,认证通过了。然而,授权[需要一个新的评论,它太大了无法粘贴在这里]。 - Jordan
服务器配置为使用内置帐户进行透传身份验证以访问指定的物理路径。但是,IIS 管理器无法验证内置帐户是否具有访问权限。请确保应用程序池标识对物理路径具有读取访问权限。如果此服务器加入了域,并且应用程序池标识为 NetworkService 或 LocalSystem,请验证 <domain><computer_name>$ 是否对物理路径具有读取访问权限。然后再次测试这些设置。 - Jordan
在基本设置下,它显示应用程序池的 ASP.NET v4.0。 - Jordan
在应用程序池 -> 高级设置(针对您的应用程序池)下,进程模型下的身份字段的值是什么? - wal
请见此链接http://learn.iis.net/page.aspx/624/application-pool-identities/,并在页面下方的“保护资源”一节中输入用户为IIS AppPool<yourapppool>。 - wal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接