我想这样做 - 但我通过网络配置分了一把剃刀。 有没有办法写剃刀或以不同的方式做到我的目标只有经理看到错误
提前为我的英语道歉
@using Or50Core.Controllers;
@if ((BaseController)this.ViewContext.Controller).IsAdministrator())
{
<system.web>
<customErrors mode="Off"></customErrors>
</system.web>
}else{
<system.web>
<customErrors mode="On"></customErrors>
</system.web>
}
&#34;如果&#34;在视图中完成工作
答案 0 :(得分:1)
使用日志记录会好得多。这样你就可以在日志文件/数据库中捕获所有错误(不仅仅是管理员获得的错误),但用户只会收到一个友好的错误。
答案 1 :(得分:1)
您可以使用此代码:
@{
var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (CustomErrorsSection)configuration.GetSection("system.web/customErrors");
if (section != null)
{
@if ((BaseController)this.ViewContext.Controller).IsAdministrator())
{
section.Mode = CustomErrorsMode.Off;
}
else
{
section.Mode = CustomErrorsMode.On;
}
}
configuration.Save();
}
此代码需要添加@using System.Web.Configuration;
才能查看。
修改强>
对于管理用户,您可以使用ASP.NET Identity,对于管理错误页面,您可以使用Custom Error Page。
答案 2 :(得分:1)
您必须在maxoverlap = zero
currentoverlap = zero
i equals zero
j equals zero
m equals len(in_mumbers)
n equals len(out_numbers)
while (I less_than m and j less_than n):
if (in_numbers[i] less_than out_numbers[j])
currentoverlap equals currentoverlap + 1
maxoverlap equals max(maxoverlap, currentoverlap)
i equals i + 1
else:
currentoverlap equals currentoverlap - 1
j = j + 1
print maxoverlap
中编写Application_Error
方法。在此方法中,您可以检查当前用户是否处于Admin角色,并根据该角色显示实际错误或仅显示一个简单的错误页面。
Global.ascx
您可以在此确定用户根据每个错误看到的内容
protected void Application_Error()
{
if (!User.IsInRole("Administrator"))
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 403:
routeData.Values["action"] = "Http403";
break;
case 404:
routeData.Values["action"] = "Http404";
break;
}
}
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
}
BTW我在Here
中找到答案