我遇到一个问题,我尝试打开我的ASP.NET MVC应用程序,但是我得到了一个ASP.NET错误页面,上面写着:
>应用程序中的服务器错误。无法找到资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的网址:/EventScheduler/account.aspx/login
版本信息:Microsoft .NET Framework版本:2.0.50727.3053; ASP.NET版本:2.0.50727.3053 **
我正在使用此博客文章中的网址技巧,这就是为什么我在网址中有.aspx:
http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/
它适用于我的其他沙盒服务器(不是开发机器),现在我只是将它作为新的虚拟目录部署到我的生产站点,但由于某种原因,它似乎实际上正在寻找.aspx文件。
有什么想法吗?我想我必须忘记一步。
答案 0 :(得分:14)
我找到了解决这个问题的方法,你不必删除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 }
答案 1 :(得分:12)
我在构建时遇到了同样的错误。默认设置是使用URLRoute设置进行导航。如果通过右键单击任何cshtml页面选择“设置为启动页面”属性,则会引发此错误,因为始终在Global.asax文件下指向当前页面。
查看启动路径的项目属性并将其删除。
答案 2 :(得分:5)
确保在提供文件之前,您没有告诉IIS检查文件是否存在。这个人咬了我几次。执行以下操作:
打开IIS管理器。右键单击您的MVC网站,然后单击属性。打开“虚拟目录”选项卡。单击配置...按钮。在通配符应用程序映射下,确保您具有到c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
的映射。确认“验证文件存在”未检查!
答案 3 :(得分:4)
如果您运行的是IIS 6及更高版本,请确保应用程序池是您的MVC应用程序。正在使用设置为集成管理管道模式。我错误地设置为Classic,并且发生了同样的错误。
答案 4 :(得分:3)
找不到页面,因为关联的控制器没有退出。只需创建特定的Controller。如果您尝试显示主页,并使用Visual Studio 2015,请按照以下步骤操作:
我希望这个帮助
答案 5 :(得分:1)
您应该仔细检查您的路线值。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
在这种情况下,请确保您拥有控制器' Home'因为如果没有带有索引操作的HomeController,应用程序将无法加载。在我的情况下,我有HomesController,我错过了' s'在家的面前。我修复了名称不匹配问题,这解决了我本地环境和服务器上的问题。
答案 6 :(得分:1)
需要确保的两件事:
1)Global.ascx
在Controller Project
档
2)不要忘记在Web Project
中添加firstArray
的引用(视图与控制器分开的项目)
第二个是我的情况。
答案 7 :(得分:1)
构建MVC应用程序时出现了同样的错误 在我的情况下,它发生了,因为我忘了添加字符串"控制器"在我的控制器名称中。
public class ProductType : BaseController
{
public ProductType()
{
}
}
public class ProductTypeController : BaseController
{
public ProductTypeController ()
{
}
}
答案 8 :(得分:1)
出现同样的问题,在我的情况下,原因是虚拟目录文件夹中缺少web.config文件。
答案 9 :(得分:0)
在你的项目中打开Global.asax.cs,然后右键单击Method RouteConfig.RegisterRoutes(RouteTable.Routes);然后单击“转到定义”
然后在defaults: new { controller = "Home", action = "Index", id =UrlParameter.Optional}
然后改变名称" Home"您自己的控制器名称和索引到您自己的视图名称,如果您已更改其他名称然后" HomeController"和"索引"
希望你的问题能得到解决。
答案 10 :(得分:0)
第1步:检查您是否收到了以下更新? http://support.microsoft.com/kb/894670如果您有,可能需要按照此过程查看它是否适合您。它部分适用于我。
它提到要删除的附加“/”的项目并不完全正确,但它确实给了我一些洞察力,可以稍微改变我的项目属性。
第2步:右键单击Solun中Web项目的属性。
选择WEB>选择当前页面而不是特定页面。
第3步:进入你的* .aspx选择一个起始页面的项目。 (应该与当前页面相同或选择您选择的另一个:))
点击调试运行。
答案 11 :(得分:0)
假设从其他地方复制源代码。
有时,如果您在应用程序网址中使用虚拟目录,请执行以下操作:
http://localhost:50385/myapp/#/
没有路由会接收请求。
溶液:
在项目文件中明确单击“创建虚拟目录”按钮。
答案 12 :(得分:0)
转到浏览器右键单击要查看的任何页面 - >在浏览器中查看。 这种方式与我合作。
答案 13 :(得分:0)
经过数小时的调试,我的html视图中只是一个c#错误。 检查您的视图并追踪任何错误
不要使用html风格评论c#代码,即
答案 14 :(得分:0)
请记住使用PUBLIC for ActionResult:
public ActionResult Details(int id)
{
return View();
}
而不是
ActionResult Details(int id)
{
return View();
}
答案 15 :(得分:0)
打开Controller.cs
文件,在public ActionResult Index()
附近,用Index
代替您要在浏览器中运行的页面的名称。对我来说是public ActionResult Login()
。
答案 16 :(得分:0)
您必须检查是否在控制器中实现了页面 例如:
public ActionResult Register()
{
return View();
}
答案 17 :(得分:0)
我有类似的问题。但是我在启用SSL的情况下在本地使用Episerver。当我没得到
“ /”应用程序中的服务器错误。
我收到一个不安全的连接错误。 最后,对我来说,PluralSight上的这篇文章以及配置网站url,并相应地在Admin Manage Website's屏幕上的项目配置中设置了ssl链接,解决了这个问题。
答案 18 :(得分:0)
就我而言,我需要替换它:
@Html.ActionLink("Return license", "Licenses_Revoke", "Licenses", new { id = userLicense.Id }, null)
与此:
<a href="#" onclick="returnLicense(event)">Return license</a>
<script type="text/javascript">
function returnLicense(e) {
e.preventDefault();
$.post('@Url.Action("Licenses_Revoke", "Licenses", new { id = Model.Customer.AspNetUser.UserLicenses.First().Id })', getAntiForgery())
.done(function (res) {
window.location.reload();
});
}
</script>
即使我不明白为什么。欢迎提出建议!
答案 19 :(得分:0)
对我来说,解决了以下步骤:
发生这种情况的一个原因是,如果您在Web项目的属性下没有起始页或错误的起始页设置。这样做:
1-右键单击您的MVC项目
2-选择“属性”
3-选择“网络”标签
4-选择“特定页面”
假设您有一个名为HomeController的控制器和一个名为Index的操作方法,请在与“特定页面”单选按钮相对应的文本框中输入“ home / index”。
现在,如果启动Web应用程序,它将带您进入HomeController的Index操作方法呈现的视图。
答案 20 :(得分:0)
它需要您添加一个Web Form,只需添加属性->新项目-> Web Form即可。然后你运行它,它会工作。简单
答案 21 :(得分:-1)
我遇到了由下面的脚本引起的同样问题。问题是由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>