【问题标题】:IIS 7, MVC 3 and WebSite/WebApplication problem - Updated: 2011-04-21IIS 7、MVC 3 和 WebSite/WebApplication 问题 - 更新:2011-04-21
【发布时间】:2011-08-08 13:39:00
【问题描述】:

已使用此帖子解决: Can you convert an ASP.NET MVC Application to a Web Site using ASP.NET MVC and what problems might you run into?

编辑:2011-apr-21(去掉了之前的代码,方便阅读,部分回复和cmets来自旧帖)

所以我正在尝试让我的新 MVC 3 页面与 IIS 7 一起使用。

以下是我目前采取的步骤:

IIS:

1) 在 IIS 7 中创建一个新网站并将其设置为使用 .NET 4.0(集成模式)

网站:

1) 我刚刚安装了新的 VS 2010 和 MVC 3(3 天前),我 3 天前从 asp.net/mvc 下载的 MVC 3。

2) 我创建了一个新的 MVC 3 项目,File->New Project->Asp.Net MVC 3 Web Application。

现在我将项目发布到文件路径(如 c:\project\newtestmvcapp

3) 我上传了文件夹 (newtestmvcapp) 的全部内容,然后 poff 就可以了。

我现在从域中删除文件。

4) 我上传了项目路径中的普通文件。我上传了除 Bin、Obj 和 properties 之外的所有文件夹。

5) 我运行该页面,现在我收到以下错误:无法加载类型“MvcApplication1.MvcApplication”。

6) 我将 CodeBehind 更改为 CodeFile,我收到以下错误:在声明类型“MvcApplication1.MvcApplication”时缺少部分修饰符;这种类型的另一个部分声明存在。公共类 MvcApplication : System.Web.HttpApplication

7) 我把这个:public class MvcApplication : System.Web.HttpApplication 改成这个:public partial class MvcApplication : System.Web.HttpApplication

8) 现在我得到一个错误,即资源(例如找不到索引或关于或任何其他页面)如果我上传 test.htm 它可以工作,如果我上传表单页面 test.aspx 它作品。只是不是 MVC。

编辑:我发现了一些关于网站和 WebAppplication 之间区别的文章。这可能是原因吗?如果是这样,我如何将此 MVC 3 项目更改为网站(从而允许在运行时编译项目)。 VS2010中没有文件->新建网站->MVC 3网站。

我们希望能够将新视图或控制器上传到服务器,然后服务器应该为我们编译它。 (测试/开发服务器)。

【问题讨论】:

  • 您的应用程序池中的 .Net 版本是什么?
  • 在 IIS 中显示 Framework: 4.0, Managed pipeline: Integrated, Identity: NetworkService

标签: asp.net-mvc asp.net-mvc-3 iis-7 asp.net-mvc-routing


【解决方案1】:

我刚刚写了一篇关于这个问题的博文,虽然它更多的是关于将 MVC3 集成到现有的网站项目中,同样的规则也适用。您应该能够通过右键单击 VS 中的项目将您的 WebApplication 转换为网站,菜单中应该有一个转换选项。 要让 MVC3 在网站项目中运行,只需将 Controllers 和 Models 文件夹放在 App_Code 下。

【讨论】:

    【解决方案2】:

    这个:

    在 VS2010 中,我在 add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken 中得到以下红色下划线“UrlRoutingModule” =31BF3856AD364E35"

    似乎指出您正在使用.NET 3.5System.Web.Routing dll。

    既然您正在构建一个MVC 3 应用程序,那么我假设您使用的是.NET 4 是否正确?如果是这样,这似乎表明您引用了错误版本的 System.Web.Routing

    这是您转换为 MVC 3 的 MVC 2 应用程序吗?


    注意

    此答案经过大量编辑,与我的原始答案无关。我指出这一点是因为@Patrick 对我的回答的评论可能令人困惑。

    【讨论】:

    • 我添加了具有这些属性的网络服务,但我仍然得到 404。
    • @Patrick - 我对我的答案有第二个想法,并对其进行了大量更新。
    • 不,我在 VS 2010 中创建了一个新的 MVC 3 项目并上传了该项目。我还没有为此创建任何控制器/视图或任何东西。我在以下 url 中找到了该路由例程:community.aspnix.com/windows-manuals-tutorials-how-tos/… 我还应该指出,我刚刚安装了 .NET 4 框架、VS 2010 和 MVC 3。我们正在为我们的其他网站使用 VS 2008、.NET 3.5 和表单(IIS 中的不同应用程序池)。
    • 为什么不在服务器上安装 mvc3,这样您就有了一个坚实的起点,并且已经在系统上实现了必要的更改?它是托管解决方案吗?
    • @Patrick - .NET 4 是否安装在服务器上?如果不是,您是否正在部署System.Web.Routing?它通常在 GAC 中,因此 VS 默认不会部署它,您仍然会遇到版本冲突问题。
    【解决方案3】:

    试试这个:

    以管理员身份打开命令提示符并插入以下文本:

    如果您使用的是 32 位机器: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"

    对于 64 位机器: "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i"

    如果这不起作用,试试这个:

    右键单击 System.Web.Routing 引用,转到属性并将 CopyLocal 设置为 true。

    希望这会有所帮助。

    【讨论】:

    • 这是对我的旧帖子的旧回应(我对我的意图不够清楚,对此我深表歉意)
    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多