gpt4 book ai didi

c# - 自定义授权属性仅适用于本地主机

转载 作者:行者123 更新时间:2023-11-30 21:04:40 24 4
gpt4 key购买 nike

我有一个用于 Ajax 请求的自定义授权属性:

public class AjaxAuthorize : AuthorizeAttribute {
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
UrlHelper urlHelper;

if (filterContext.HttpContext.Request.IsAjaxRequest()) {
urlHelper = new UrlHelper(filterContext.RequestContext);

filterContext.HttpContext.Response.StatusCode = 401;
//Return JSON which tells the client where the login page exists if the user wants to authenticate.
filterContext.HttpContext.Response.Write(new JavaScriptSerializer().Serialize(
new {
LoginUrl = string.Format("{0}?ReturnURL={1}", FormsAuthentication.LoginUrl, urlHelper.Encode(filterContext.HttpContext.Request.Url.PathAndQuery))
}
));
filterContext.HttpContext.Response.End();
} else {
base.HandleUnauthorizedRequest(filterContext);
}
}
}

当我在本地运行应用程序时,我从 Ajax 请求中得到了 JSON 结果。然而,当我将代码放在我的测试版服务器上时,我最终得到了 IIS 401 HTML 响应。

有没有人发现我的代码有问题,导致它只能在本地主机上运行?此外,如果有人对返回 JSON 结果有更好的想法,我也愿意接受。

最佳答案

StackOverflow 有一些奇怪的功能,导致 OP 在发布后以不同的方式思考问题。我会在这里留下我的答案,希望它能对其他人有所帮助。

我刚刚想到 IIS7 妨碍了我。我通过添加一行代码解决了这个问题:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;

关于c# - 自定义授权属性仅适用于本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12219524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com