dpmpa26468 2011-01-11 18:02
浏览 73
已采纳

Web Service不会在请求之间保持状态

I am developing an ASP.NET Web Service:

# MyWS.cs
[WebMethod(EnableSession = true)]
public bool TryLogin(string user, string pass)
{
    if (/* user validation is successful*/)
    {
        Context.Session["user"] = user;
        return true;
    }
    else
    {
        Context.Session.Abandon();
        return false;
    }
}
[WebMethod(EnableSession = true)]
public string RetrieveSomething()
{
    if (Context.Session["user"] == null)
        throw Exception("User hasn't logged in.");
    /* retrieve something */;
}

This ASP.NET must be consumed by a PHP Web site I am developing as well:

# ws_client.php
function get_soap_client()
{
    if (!isset($_SESSION['client']))
        $_SESSION['client'] = new SoapClient('MyWS.asmx?WSDL');
    return $_SESSION['client'];
}
function try_login($user, $pass)
{
    return get_soap_client()->TryLogin(
        array('user' => $user, 'pass' => $pass))
        ->TryLoginResult;
}
function retrieve_something()
{
    return get_soap_client()->RetrieveSomething(
        array())->RetrieveSomethingResult;
}

# index.html
<?php
    if (isset($_POST['submit']))
    {
        session_start();
        require_once('ws_client.php');
        if (try_login($_POST['user'],
                      $_POST['pass']))
        {
            session_write_close();
            header('Location: /main.php');
            exit();
        }
?>
<html> <!-- login form here >

# main.php
<?php
    session_start();
    require_once('ws_client.php');
    // Here I get the Exception "User hasn't logged in.", even though
    // the user has logged in and the web service has already been notified.
    echo htmlspecialchars(retrieve_something());
?>

What could be wrong with either my Web Service or my PHP site?

  • 写回答

1条回答 默认 最新

  • douyong1850 2011-01-11 18:06
    关注

    I don't know the PHP SOAP tools, but Session state is maintained through a cookie. Will this code accept a cookie the first time, then send it back on subsequent calls?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题