将MVC应用程序部署到Web Server无法正常运行

时间:2010-02-23 03:30:17

标签: asp.net-mvc iis-7 asp.net-3.5

我整夜都在阅读帖子,寻找我的问题的答案,但还没有发现任何对我有用的东西。我确信有一种简单的方法可以做到这一点,但我还没有发现它。

详细说明: MVC 2预览 Asp.net 3.5 sp1框架 VS 2008 C#Web应用程序 Windows Server 2008 IIS 7

我通过VS 2008运行良好的应用程序没问题。当我点击播放以在调试模式下运行它启动ASP.NET开发服务器应用程序加载正常并按预期工作,太棒了!

当我在IIS 7上本地或我的Web服务器上发布应用程序时,应用程序无法正常运行。一些图标丢失,谷歌地图地图丢失。当我查看源时,它看起来是正确的,但我可以看到图像的路径正在寻找MVC路径,而它找不到它们。它看起来应用程序是作为常规的asp.net应用程序运行而不是mvc应用程序,也许?

我还尝试在localhost上本地命中完整的源代码,并且存在完全相同的问题。

所以,我想我的问题是我如何在IIS中部署MVC应用程序,就像在开发服务器中一样。

PS环境干净,开箱即用。

4 个答案:

答案 0 :(得分:0)

@ user68137说你需要使用图像的相对路径是正确的。

我也被这个问题搞定了,这里是关于它的my previous SO question ......

简而言之,你需要做这样的事情......

 <img src='<%= Url.Content( "~/Content/Images/banner.jpg" ) %>' alt="Banner" /> 

希望这有帮助!

答案 1 :(得分:0)

我设置了相对路径,但是我没有意识到当我将它部署到服务器时它转到了wwwroot \ subsite ...我将相对路径设置为src =“.... \ image .jpg“返回网站的根目录。我的错误是,如果站点不在根目录中,那么子站点会回溯到根目录以查找图像,当然也找不到它们。 JS文件也发生了同样的事情。我使用了Url.Content,效果很好!问题解决了!

有趣的是,当通过子站点运行VS dev服务器时,它仍然运行良好并找到路径,即使它不应该有。 VS dev服务器&lt;&gt; IIS

感谢您的帮助!

西蒙。

答案 2 :(得分:0)

一旦知道要部署项目的位置的虚拟路径,就应该进入Visual Studio中的项目配置并将其添加到项目中。这样,visual studio开发服务器将使用与部署服务器相同的路径结构。在部署时,这将为您节省大量的工作时间。

答案 3 :(得分:0)

当您通过Visual Studio运行网站时,每个请求都会通过ASP.NET管道进行处理,包括图像,CSS和其他资源。默认情况下,IIS仅处理特定扩展(例如,aspx),除非您通过配置告知它。像'/content/images/yourimage.jpg'这样的路径应该可以正常工作......我怀疑你的IIS配置有些不妥。

我遇到的另一种可能性是您可能已在IIS服务器上安装的任何自定义ISAPI筛选器(例如,ISAPI_rewrite)。在配置中设置规则很容易导致一些非常意外的结果。