概述
我正在尝试将现有的MVC 4 Web应用程序修补到MVC 5,并从Oracle DataAccess 11g修补到12c。它在Visual Studio中本地运行良好,没有错误,具有完整功能。但是,当我将它移动到开发服务器时,我收到以下错误:
我查看了以下Stack Overflow帖子,并在那里尝试了修复而没有任何运气:
我认为他们并不真正适用于此,因为这些帖子中的错误发生在VS中,这对我来说很好。除非我找错了地方,否则我的问题似乎与开发服务器上的IIS设置有关。也就是说,如果你想让我发布web.config文件,我可以这样做。
应用
正如我上面所说,我尝试了我提供的两个链接中的所有修复,但无济于事。我的Web.config文件似乎都没问题;至少我能够在没有问题的情况下在本地运行。
我还尝试为所有DLL设置Copy Local
到True
,这是一种盲目的做法并没有做任何事情。
发布网站时,我的目标是“任何CPU”,我不预先编译。我试着摆弄两种设置,但似乎并没有什么区别。
服务器资料
我的devops不愿意或无法帮助解决这个问题。当我去他们时,他们只是说“你想让我做什么,它是开发服务器。”服务器的东西不是我的强项,所以我处于“戳和祈祷”模式。
服务器正在运行带有所有最新修补程序的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验证了这一点。
这令人非常沮丧,因为它在本地似乎很好,我不知道在哪里可以看到服务器上有什么不同。我从我所在部门的服务器人那里得到零帮助。非常感谢来自这里的任何帮助。
更新 感谢您的评论,他们包含了很好的信息。我已经尝试确保web.config文件可用,它们是。我最后解决的问题是删除并重新创建IIS中的“站点”。我不知道为什么修复它。正如我在最初的评论中所说,我不是服务器人
答案 0 :(得分:0)
将应用程序部署到服务器时,我遇到了同样的问题。在我的情况下,已发布应用程序的视图文件夹中缺少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。
答案 1 :(得分:0)
我遇到了同样的问题。 我通过执行以下步骤解决了这个问题。
检查服务器上的文件。就我而言,所有文件都在存储库中可用,但是服务器上缺少 web.config 文件。
我向服务器添加了 Web.config 文件,随后所有页面开始正常工作。