[WebService(Namespace = "http://service.site.com/service/news")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
public class NewsService : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod]
public void DoPost(string title, string markdown, int categoryId)
{
if (!MembershipHelper.IsAtLeast(RoleName.Administrator))
throw new AuthenticationException();
// ...
}
}
有很多选择,但似乎没有一个特别针对此类案例设计。
即:
等
我应该为此创建自己的异常类型吗?当成员资格用户没有足够的权限来调用方法时,应该引发什么异常?
答案 0 :(得分:4)
AccessViolationException
是一个坏主意。它应该只由运行时本身抛出。它表示非常严重的故障(您的内存已损坏),唯一合适的响应是终止该过程。无效的Web请求当然不等同于损坏的内存。
UnauthorizedAccessException
听起来像是一个不错的选择。您可能希望从中派生自己的类以创建更具体的异常。
答案 1 :(得分:1)
UnauthorizedAccessException
似乎足够了;它不是为IO操作保留的。但如果你不喜欢它,那就创建你自己的。