最后,我将我的MVC应用程序发布到Azure云服务。我的数据库也在那里。在将WindowsAzure项目添加到我的解决方案并将我的2个项目(模型和Web)添加为角色后,我可以在本地运行该应用程序。
但是当我运行URL时出现错误:
说明:服务器上发生应用程序错误。此应用程序的当前自定义错误设置可防止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以由运行在本地服务器计算机上的浏览器查看。
所以我设置并重新发布但仍然得到相同的错误
我需要强制Azure告诉我发生了什么并揭示错误,任何人都有任何想法?
答案 0 :(得分:2)
Azure云服务中没有内置日志。您可以实现自己的,但这涉及一些实现。在我的解决方案中,我有一个我创建的自定义错误页面。我的网络配置如下:
<customErrors mode="On" defaultRedirect="~/error/Error">
...
</customErrors>
我的View / Shared目录中有一个名为“Error.cshtml”的视图。使用上面的配置,只要我的应用程序出错,就会显示它。
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Error";
}
<h2> Sorry, an error occurred while processing your request!!?!</h2>
<div>
Try again. If the problem persists...
Close all your browser windows and re-login to the application. If the problem still persists...
Contact the service desk with the details of this error.
</div>
<h3>Error Details</h3>
<div>
<strong>
@Model.Exception.Message
</strong>
<pre>@Model.Exception.StackTrace</pre>
</div>
</div>
</div>
另外,要使上述工作正常,您需要将其添加到Global.ascx.cs中。它在出现错误时定义应用程序的默认行为。像这样:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Here is a blog post that talks about it in some more details.
该帖子和这个答案也涉及记录错误。如果你想走那条应该让你开始的路线:
Setting HTTP Status in ASP.NET MVC controller results does not render view
答案 1 :(得分:1)
检查您是否未使用转换覆盖web.config设置.MVC项目的Visual Studio 2012模板会自动将此行添加到web.config.release文件中:
发布应用程序时,您的web.config可能正在转换。
编辑另外,您可能想查看ELMAH,它是一个很棒的日志记录工具,很容易添加到您的项目中,并且会让您看到每个错误的信息丢失: