English 中文(简体)
排泄物处理如何与 j和 as子一样工作?
原标题:How does the execption handling work with jquery and asp.net mvc?
  • 时间:2009-09-12 21:12:14
  •  标签:

我在玩弄我的法典,如果我这样做,我想看到会发生什么。

我装上了我的 as子,然后去我的ms子2005年数据库,击中了pa。 然后,我点击了一个有 j子要求的链接。

这涉及我的控制器中的一种方法(即是一种JsonResult型),它有一套“Post”和“Athentication属性”的行动Verb。

现在,在我的法典中,我有一份SqlExpection书,其中应涵盖所有SqlExceptions,然后退回一个json结果,传递一个通俗的信息,即“数据库缩小”。

这样,用户就知道正在做些什么,但却没有发出可能错误的信息,这样就能够让黑客看到数据库为何倒塌。

因此,我预计会看到我的错误信息。 但是,我看一看对策,我听到这一巨大的长期信息,说“数据库已经消失,而且失败”。

因此,我根本不想让用户了解情况。 幸运的是,它没有出现在我的电文箱中,因为它并不看上去是JsonResult,但任何有火力的人都会看到。

因此,它甚至没有把它变成我的手法。 因此,还必须有其他地方发生这一错误。

因此,我为什么不这样做的例外? 这是否是因为我的归属? 因为它根本看不见这种方法。

增 编

这里是背后的部分。

 <b>Stack Trace:</b> <br><br>

            <table width=100% bgcolor="#ffffcc">
               <tr>
                  <td>
                      <code><pre>

[SqlException (0x80131904): SQL Server service has been paused. No new connections will be allowed. To resume the service, use SQL Computer Manager or the Services application in Control Panel.
Login failed for user  myPc .
A severe error occurred on the current command.  The results, if any, should be discarded.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1951450
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849003
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2394
   System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
   System.Data.SqlClient.SqlDataReader.get_MetaData() +83
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) +70
   System.Web.Security.SqlRoleProvider.GetRolesForUser(String username) +760
   System.Web.Security.RolePrincipal.IsInRole(String role) +164
   System.Linq.Enumerable.Any(IEnumerable`1 source, Func`2 predicate) +159
   System.Web.Mvc.AuthorizeAttribute.AuthorizeCore(HttpContextBase httpContext) +218
   System.Web.Mvc.AuthorizeAttribute.OnAuthorization(AuthorizationContext filterContext) +35
   System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) +99
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +399
   System.Web.Mvc.Controller.ExecuteCore() +126
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +27
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +151
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +57
   System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously) +75
</pre></code>
最佳回答

我认为,你的审判/捕获物组属于行动方法,但失败发生在行动实施之前。 具体来说,我认为,在你要求GetRolesForUser时,这种失败采用授权办法。

该守则可由科索沃海事委员会提供,如果在数据获取方面没有采取充分的安全措施,则会起诉我。 情况最糟:你可能需要制定一种习俗授权,并超越其授权的核心方法,或超越你再次延长的主计长的“英特里亚办法”。

1. 确立你自己的授权职责:

public class MyAuthorizeAttribute: AuthorizeAttribute
{
  protected override bool AuthorizeCore(HttContextBase httpContext)
  {
    var isAuthorized = //your code here;
    return isAuthorized;
  }
}

现在,你可以把这一授权取代授权,例如:

[MyAuthorize(Roles = "Admin")]
public ViewResult MyAction()
{
  ...
}

3. 超越主计长的“奥图里亚化”方法:

protected void OnAuthorization(AuthorizationContext filterContext)
{
  var isAuthorized = //your code here;

  if(!isAuthorized) 
  {
    filterContext.Result = new HttpUnauthorizedResult();
  }
}

www.un.org/Depts/DGACM/index_spanish.htm 这个问题涉及向客户发回的异常例外。 它不帮助的是,你能够追捕这一例外,收回有意义的回馈(例如,数据库正在缩小)。 问题是,我们可以抓住这样一个事实,即数据库在授权方法中被缩小,即我们应当表明用户没有授权。 然而,由于用户无权使用这一行动方法,因此,你向客户归还物品的能力受到限制。

由于缺乏更好的处理方式,你可能希望让用户通过“奥阿蒂特里亚化”进行处理。 方法,但在你重新做这项工作时,你可以确定一种价值已知的类别财产。 当你进入行动方法时,你可以检查这一价值,并在此采取行动。 它是一种 ha,你的微笑会有所不同。

或者,你可以加上一种[HandleError(View=......”)的属性。 我不知道,如果由于授权步骤的错误而造成火灾,这不会遣返一名JSONResult和你打算返回。

问题回答

就像你一样,你看到了一种例外,它带有一条轨迹(在网络上 true倒事实),它应当告诉你一种例外类型(也许你正在追赶大卫·安德烈斯所建议的错误类型),而且还将包含从指被扔到哪里的脚印上。

p.s.,在你的“问题”中没有任何问题,甚至有问题,因此,我认为这是你所期待的。





相关问题
热门标签