2009-10-28 118 views

回答

1
Response.Clear()  
Response.Write("Access Denied") 
Response.StatusCode = 401; 
Response.End() 
+0

完美! 。 。 。 。 ! – NibblyPig

+2

如果有一些其他东西已经写入输出,它将无法工作。至少,事先做一个Response.Clear()。 如果您希望标准的http访问方式被拒绝,使用StatusCode即可。 –

+0

完全正确(response.clear) –

29

要返回的401 HTTP返回代码( “拒绝访问”)

所以,

Response.Clear(); 
Response.StatusCode = 401; 
Response.End(); 

应该做的伎俩

+0

这绝对是更好的答案。其他申请您的页面的应用程序将查看状态代码并能够确定发生了什么。 – ine

1

要在任何其他发送此输出,你有几个选项。

一,创建一个HTTPHandler模​​块,将其添加到web.config中。这可以在页面获得控制权之前看到ASP.NET管道事件,因此如果您可以确定您不希望页面运行,那么可以在页面执行任何操作之前发送401。处理程序继承IHTTPHandler,因此开始在该接口定义上搜索文档。

其次,您可以挂接页面事件PreInit和Init,并在页面加载方法启动之前发送401。由于页面类是由这个时候创建​​的,你也可以设置一个标志在页面对象的其它方法可以查看网页是否与401

4

响应我会做这样的事情

throw new HttpException(401, "Access Denied"); 
0
HttpResponseMessage response = new HttpResponseMessage(); 
try{ 
    //try smth 
} 
catch (UnauthorizedAccessException UAEx){ 
    response = Request.CreateResponse(HttpStatusCode.Unauthorized, UAEx.Message); 
} 
return response; 
相关问题