我有一个问题,我尝试打开我的ASP.NET MVC应用程序,但我得到的ASP.NET错误页面说:
'/'应用程序中的服务器错误。
无法找到该资源。说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的URL:/EventScheduler/account.aspx/login
版本信息:Microsoft .NET Framework版本:2.0.50727.3053; ASP.NET版本:2.0.50727.3053 **
我正在使用此博客帖子中的URL技巧,这就是为什么我在URL中有.aspx:
http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/
它适用于我的其他沙盒服务器(不是开发机器),现在我只是将它作为新的虚拟目录部署到我的生产站点,但由于某种原因,它似乎实际上正在寻找.aspx文件。
有任何想法吗?我想我一定是忘记了一步。
我找到了解决这个问题的方法,你不必删除global.asax,因为它包含一些有价值的信息,让你的proyect顺利运行,而是查看你的控制器的名字,在我的情况下,我的控制器被命名了作为MyController.cs的东西,在global.asax中,它试图引用一个Home Controller。
在全局的asax中寻找这一行
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
在我的情况下,我必须得到这样的工作
new { controller = "My", action = "Index", id = UrlParameter.Optional }
假设从其他地方复制源代码。
有时,如果您在应用程序URL中使用虚拟目录,例如:
http://localhost:50385/myapp/#/
没有路由会接收请求。
解:
明确单击项目文件中的“创建虚拟目录”按钮。
在你的项目中打开Global.asax.cs然后右键单击Method RouteConfig.RegisterRoutes(RouteTable.Routes);然后单击Go To Definition然后在defaults: new { controller = "Home", action = "Index", id =UrlParameter.Optional}
然后将“Home”的名称更改为您自己的控制器Name和Index到您自己的View Name如果您更改了其他名称,那么“HomeController”和“Index”希望您的问题将得到解决。
第1步:检查您是否收到以下更新? http://support.microsoft.com/kb/894670如果你有,你可能想要遵循这个程序,看看它是否适合你。它部分适用于我。它提到要删除的附加“/”的项目并不完全正确,但它确实给了我一些洞察力来改变我的项目属性。 第2步:右键单击Solun中Web项目的属性。选择WEB>选择当前页面而不是特定页面。 第3步:进入你的* .aspx选择一个起始页面的项目。 (应该与当前页面相同或选择您选择的另一个:))点击调试运行。
在浏览器中右键单击 - >在浏览器中查看,转到要查看的任何页面。这样跟我合作。
经过几个小时的调试,我的html视图中只是一个c#错误。检查您的视图并追踪任何错误
不要使用html样式评论c#代码,即
打开Controller.cs
文件并靠近public ActionResult Index()
,代替Index
写下您要在浏览器中运行的页面名称。对我来说,这是public ActionResult Login()
。
记得使用PUBLIC for ActionResult:
public ActionResult Details(int id)
{
return View();
}
代替
ActionResult Details(int id)
{
return View();
}
你必须检查你是否在控制器中实现了页面,例如:
public ActionResult Register()
{
return View();
}
我遇到了下面的脚本导致的同样问题。问题是由url变量引起的。当我添加http://|web服务器名称| / |应用程序名称|时在/Reports/ReportPage.aspx前面...它开始工作了。
<script>
$(document).ready(function () {
DisplayReport();
});
function DisplayReport() {
var url = '/Reports/ReportPage.aspx?ReportName=AssignmentReport';
if (url === '')
return;
var myFrame = document.getElementById('frmReportViewer');
if (myFrame !== null) {
if (myFrame.contentWindow !== null && myFrame.contentWindow.location !== null) {
myFrame.contentWindow.location = url;
}
else {
myFrame.setAttribute('src', url);
}
}
}
</script>
我在构建时遇到了同样的错误。默认设置是使用URLRoute设置进行导航。如果通过右键单击任何cshtml页面选择“设置为启动页面”属性,则会抛出此错误,因为始终在Global.asax文件下指向当前页面。
查看“启动路径的项目属性”并将其删除。
确保在提供文件之前,不要告诉IIS检查并查看文件是否存在。这个人咬了我几次。请执行下列操作:
打开IIS管理器。右键单击您的MVC网站,然后单击属性。打开“虚拟目录”选项卡。单击配置...按钮。在通配符应用程序映射下,确保您有到c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
的映射。确认“验证文件存在”未检查!
如果您运行的是IIS 6及更高版本,请确保应用程序池是您的MVC应用程序。正在使用设置为集成管理管道模式。我错误地设置为Classic,并且发生了同样的错误。
找不到页面导致关联的控制器不退出。只需创建特定的Controller。如果您尝试显示主页,并使用Visual Studio 2015,请按照下列步骤操作:
我希望这有帮助
您应该仔细检查您的路线值。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
在这种情况下,请确保您拥有Controller'Home',因为如果没有带有索引操作的HomeController,应用程序将无法加载。在我的情况下,我有HomesController,我错过了家的前面。我修复了名称不匹配问题,这解决了我本地环境和服务器上的问题。
有同样的问题,在我的情况下,原因是虚拟目录文件夹中缺少web.config文件。
构建MVC应用程序时遇到了同样的错误。 在我的情况下,它发生是因为我忘了在控制器名称中添加字符串“Controller”。
public class ProductType : BaseController
{
public ProductType()
{
}
}
public class ProductTypeController : BaseController
{
public ProductTypeController ()
{
}
}
需要确保的两件事:
1)Route
应该在Global.ascx
文件中正确
2)不要忘记在你的Controller Project
中添加Web Project
的参考(查看与控制器分开的项目)
第二个是我的情况。