首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Response.addHeader导致500 (内部服务器错误)

Response.addHeader导致500 (内部服务器错误)
EN

Stack Overflow用户
提问于 2015-12-14 14:05:20
回答 1查看 309关注 0票数 0

我已经写了一个登录WebMethod,如果细节没有问题,我想重定向到另一个页面。

这是我的密码:

代码语言:javascript
复制
[WebMethod]
public String Login(String email, String password){

    String result=WSUtils.GetData("check_login", email, password);
    if (result.Equals("True")){

          Context.Response.Clear();
          Context.Response.Status = ""+System.Net.HttpStatusCode.Redirect;
          Context.Response.AddHeader("Location", "/admin/index.html");
          Context.Response.TrySkipIisCustomErrors = true;
          Context.Response.End();

    }
return result;
}

此代码导致500 (内部服务器错误)谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-14 15:38:23

你的功能做得太多了。它作为一个返回字符串的WebMethod被调用,但是您正在尝试在其中重定向。问题是,在这种函数内部重定向是没有意义的。无论什么叫Login,都只知道string结果。可以说,函数的返回类型代表了客户机和服务器之间的“契约”。通过在函数内部重定向,您正在打破这个契约,做一些客户端无法解释的意外事件,以及处理WebRequest的服务器基础设施无法处理的事情。

正确的方法是让您的Login函数坚持“契约”,just返回结果。通过解析string结果并对其采取行动,调用代码应该负责解释该代码的结果。

为此,从服务器调用中删除整个"if“块,并将客户端上的代码更改为(类似):

代码语言:javascript
复制
if (myWebServiceClient.Login(email, password) == "True")
{
    //I logged in, do success stuff here
}
else
{
    //Display some kind of login failed message
    //Redirect here
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34268979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档