我的新ASP.NET MVC Web应用程序可以在我的开发工作站上运行,但不能在我的Web服务器上运行...
'/'应用程序中的
服务器错误 .
配置错误
Description: 处理为此请求提供服务所需的配置文件时发生错误 . 请查看下面的具体错误详细信息并相应地修改配置文件 .
Parser Error Message: 无法加载文件或程序集'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其依赖项之一 . 该系统找不到指定的文件 .
Source Error:
Line 44: <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45: <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46: <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47: <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48: <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Source File: C:\ inetpub \ www.example.org \ web.config Line: 46
Assembly Load Trace: 以下信息有助于确定无法装入程序集'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'的原因 .
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
Version Information: Microsoft .NET Framework版本:2.0.50727.3053; ASP.NET版本:2.0.50727.3053
我是否需要在服务器上安装AspNetMVCBeta-setup.msi?或者是否有不同的服务器安装程序?
20 回答
除了Haack帖子,Hanselman也有类似的帖子 . BIN Delploying ASP.NET MVC 3 with Razor to a Windows Server without MVC installed
对我来说,“复制本地=真”解决方案是不够的,因为我的网站的项目参考不包括所有丢失的dll . 正如Scott在他的帖子中提到的,我还需要从我的开发盒上的以下文件夹中获取额外的dll:C:\ Program Files(x86)\ MicrosoftASP.NET \ ASP.NET网页\ v1.0 \ Assemblies . 错误消息告诉我哪个DLL丢失了(System.Web.Infrastructure,System.Web.Razor等)我继续逐个添加每个丢失的dll,直到它工作 .
我已经做了一个“Update-Package -reinstall Microsoft.AspNet.Mvc”来修复它在Visual Studio 2015中 .
还要检查 Views folder 中web.config中的程序集版本,并确保它匹配 . 我有时会忘记该位置有第二个web.config .
这篇博文可能是菲尔的副本,但它可能会有所帮助:
http://www.tugberkugurlu.com/archive/deployment-of-asp-net-mvc-3-rc-2-application-on-a-shared-hosting-environment-without-begging-the-hosting-company
我刚写了一篇博文来解决这个问题 . 您可以在服务器上安装ASP.NET MVC,也可以按照steps here进行操作 .
EDIT: (由jcolebrand)我经历了这个链接,然后和Victor below有同样的问题,所以我建议你也添加这些:
我和sgriffinusa遇到了同样的问题 . 除了Phil的文章建议的参考文献:http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . 我添加了这些:
Godaddy部署工作完美 . 关闭自定义错误并添加引用以更正错误 . 这应该引导你朝着正确的方向前进 .
直接在Web服务器上安装MVC是一种选择,因为程序集将安装在GAC中 . 您还可以对程序集进行bin部署,这可能有助于使服务器远离预发布程序集,直到最终发行版可用 .
Phil Haack几天前发布了一篇关于如何将MVC与您的应用程序一起部署的好文章,因此没有必要直接安装:
http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx
我试图在GoDaddy共享主机上部署我的MVC3 Razor Web应用程序时遇到了同样的问题 . 还有一些需要引用的附加.dll . 详情:http://paulmason.biz/?p=108
基本上除了@Hacked的帖子中列出的内容之外,您还需要添加对以下内容的引用,并将它们设置为按照描述在本地部署 .
Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
在VS2010中,右键单击Solution Explorer中的项目,然后选择“Add Deployable Dependencies” . 然后在以下对话框中检查MVC相关的复选框 .
这将在项目中创建一个“_bin_deployableAssemblies”文件夹,其中包含其他答案中提到的所有.dll文件 . 我相信在创建部署包时会将这些文件复制到bin文件夹中 .
简单的修复 . 在VS2010中,右键单击MVC项目,选择“Add Deployable Dependencies ...”,选择所需的选项,然后单击“确定” .
我们想要添加它,因为我们正在创建一个使用它的类库 .
对我来说就是......
C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies
有同样的问题,并添加了他们说的所有组件,但仍然有同样的错误 .
结果你需要使“ Specific Version ”= False .
Quick & Simple Solution: 我遇到了Microsoft.AspNet.Mvc -Version 5.2.3的这个问题,经过所有这些线程后,我发现了一个最简单的解决方案 .
只需按照步骤操作
在Visual Studio中为您的项目打开NuGet包管理器
搜索Microsoft.AspNet.Mvc
找到后,将操作更改为卸载并卸载它
完成后,再次安装并立即尝试
这将自动修复引用的所有问题 . 见下图:
如果您的NOT使用托管服务提供商,并且您可以访问服务器进行安装......那么安装MVC 3更新工具,这样做......它将在Windows 2003服务器/ IIS6计算机上节省数小时的问题 . ,我在这里评论了这个页面Nuget.Core.dll version number mismatch
将项目移动到另一个解决方案后,我遇到了一堆程序集文件的问题 .
对我来说,
web.config
文件试图添加这个程序集:认为项目中的引用指向版本
3.0.0.0
(单击引用并滚动到属性的底部) . 因此我刚刚更改了web.config
文件中的参考版本 .我不知道这只是某种错误 . 添加所有其他引用的问题是引用出现在配置文件中,但它实际上并未在项目中引用(在解决方案资源管理器中),并且所需的文件未与其余项目文件一起复制,可能是因为没有
"copy local = true"
现在,我无法在可添加的程序集中找到这些程序集(通过右键单击引用并尝试从程序集或扩展中添加它们) . 相反,我创建了一个新的MVC解决方案,它添加了我需要的所有程序集和引用,并在解决方案资源管理器中的新项目引用下找到它们,并在属性窗口中找到它们的路径以供参考 .
然后我只是将我需要的库复制到另一个项目中并引用它们 .
尝试了一切后仍然失败这是我的解决方案:我记得我有错误并且错误最后更新我的Visual Studio中的MVC版本所以我从另一个Visual Studio(不同的计算机)运行项目,而不是上传dll-s并且它有效 . 也许它会帮助别人......
我正在使用Jenkins和.net项目,并且遇到了MVC 4引用的麻烦 .
我终于通过使用基于注册表的.Net参考搜索引擎功能解决了我的问题:
“HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ V2.0.50727 \ AssemblyFoldersEx”
例如,您可以创建子键并将默认键设置为“c:\ myreferenceedir” .
它为我节省了MVC版本和ASP.net网页 .
有用于添加对“添加引用对话框”的引用
http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/
正如其他人所提到的,将这些引用添加到视觉工作室中,
Copy Local
设置为true
. (我也不得不添加System.Web.Webpages
)我使用Manage NuGet Packages添加了“Microsoft ASP.NET Razor” .
使用Add References,出于某种原因,我只有System.Web.Helpers 1.0.0和2.0.0 ......但不是3.0.0 .
我的另一个选择是删除对System.Web.Mvc和System.Web.Http的引用...然后将它们重新添加到csproj文件中的包位置(您可以最轻松地编辑项目文本编辑器):
一个重要的考虑因素是web.config文件,有些软件包可能会破坏你的绑定重定向导致破坏(流氓软件包是内部包,我没有从包中删除web.config或确保包中的web.config)没有任何绑定重定向 . 例如,通过删除重复和不正确的节点解决此问题
通过删除第8到24行修复了构建 .