【问题标题】:"CS0103: The name 'model' does not exist in the current context" error on SERVER only“CS0103:当前上下文中不存在名称‘模型’”错误仅在服务器上
【发布时间】:2018-10-28 05:54:00
【问题描述】:

概述

我正在尝试将现有的 MVC 4 Web 应用程序修补到 MVC 5 以及从 Oracle DataAccess 11g 到 12c。它在 Visual Studio 中本地运行良好,没有错误,功能齐全。但是,当我将它移动到开发服务器时,我收到以下错误:

我查看了以下 Stack Overflow 帖子,并在那里尝试了修复,但没有任何运气:

我认为它们在这里并不适用,因为这些帖子中的错误发生在 VS 中,这对我来说很好。除非我找错地方了,否则我的问题似乎与开发服务器上 IIS 中的设置有关。也就是说,如果您希望我发布 web.config 文件,我可以这样做。

应用程序

如上所述,我尝试了我提供的两个链接中的所有修复,但无济于事。我的 Web.config 文件似乎都还可以;至少我能够毫无问题地在本地运行。

我正在运行最新版本的 MVC 5、Razor 等:

我还尝试将所有 DLL 的 Copy Local 设置为 True,这有点盲目,没有做任何事情。

发布站点时,我以“任何 CPU”为目标,并且不进行预编译。我尝试摆弄这两种设置,但似乎没有什么不同。

服务器资料

我的开发人员不愿意或无法帮助解决这个问题。当我去找他们时,他们只是说“你想让我做什么,这是开发服务器。”服务器的东西并不是我的强项,所以我处于“戳和祈祷”模式。

服务器正在运行带有所有最新补丁的 Windows Server 2008 R2。 当我查看控制面板的“已安装程序”部分时,它显示.NET Framework 4.7.1

当我查看与应用程序关联的 IIS 应用程序池的基本设置时,它显示 .NET Framework 版本为 .NET Framework v4.0.30319,托管管道模式设置为 integrated。它与 4.7.1 不同是有原因的吗?同样,IIS 不是我的专业领域。

当我查看应用程序池的高级设置时,它显示框架版本为4.0,“启用 32 位”为false。如果您还想了解其他设置,请告诉我。

服务器上安装了 32 位和 64 位版本的 Oracle 12c。我与 DBA 验证了这一点。

这非常令人沮丧,因为它在本地似乎很好,而且我不确定在哪里查看服务器上的不同之处。我从我部门的服务员那里得到零帮助。非常感谢这里的任何帮助。

更新 感谢 cmets,它们包含了很好的信息。我已经尝试过确保 web.config 文件可用,而且它们确实可用。我最终解决此问题的方法是在 IIS 中删除并重新创建“站点”。我不知道为什么要修复它。正如我在最初的评论中所说,我不是服务器人

【问题讨论】:

    标签: c# asp.net-mvc iis oracle12c


    【解决方案1】:

    在将应用程序部署到服务器时,我遇到了同样的问题。就我而言,已发布应用程序的视图文件夹中缺少 web.config 文件。尽管它在实际项目中存在。

    在我将它添加到我的视图文件夹后(右键单击 -> 添加现有项目)并发布应用程序。它开始工作了。

    或者如果 web.config 文件不在 view 文件夹中,您可以创建一个具有相同项目设置配置的新项目,将其 View 的 web.config 文件复制到您的实际项目中,并将其添加到您的项目中,如前所述。

    以下是我查找问题并修复它的步骤。 1) 在您的主目录 web.config 文件中设置“customError mode = on”。这将在屏幕上显示异常。或者查看事件查看器以获取警告或异常的详细信息。

    <system.web>
    <customErrors mode="On" >       
            .....    
        </customErrors>
      </system.web>
    

    2) 在本地 IIS 上部署您的项目应用程序文件夹(项目主目录)。就我而言,它正在工作,因为视图能够找到它的 web.config。

    3) 发布您的应用程序并将其部署在本地 IIS 上。在这种情况下,应用程序无法正常工作,因为已发布的二进制文件正在删除 View 的文件夹 web.config 文件。

    请检查this 链接以及您的错误。

    对于 Oracle dll,如果应用程序池为 "enable 32-bit = false" ,则需要 64 位 oracle.DataAccess.dll。在这种情况下,您只需在 bin 文件夹中用 64 位 oracle dll 替换/复制当前的 oracle dll。确保已安装 oracle 客户端或 GAC 中存在适当的 oracle dll。

    【讨论】:

    • 感谢您的评论。这都是极好的信息。我最终解决此问题的方法是在 IIS 中删除并重新创建“站点”。我不知道为什么要修复它。正如我在最初的评论中所说,我不是服务员。
    • 谢谢!我的Views\Web.config 没有包含在部署中,因为它在我的csproj 中被引用为&lt;None Include=... /&gt; 而不是&lt;Content Include=... /&gt;
    【解决方案2】:

    我也遇到过同样的问题。 我通过执行以下步骤解决了这个问题。

    1. 检查服务器上的文件。在我的情况下,存储库中的所有文件都可用,但服务器上缺少 web.config 文件。

    2. 我将 Web.config 文件添加到服务器,之后所有页面都开始正常工作。

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多