65.9K
CodeProject 正在变化。 阅读更多。
Home

从 MFC(非托管)应用程序调用 WebService(托管 C# WebService),并使用 Cookie 容器保留会话。

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.88/5 (12投票s)

2004 年 9 月 12 日

CPOL

2分钟阅读

viewsIcon

89340

downloadIcon

1288

本文涉及通过保留会话(使用 Cookie 容器)从 MFC(非托管)应用程序调用 webService(托管 C# webservice)。

引言

本文介绍如何从 MFC(非托管)应用程序调用 WebService(托管 C# WebService),并使用 Cookie 容器保留会话。

描述

本文涉及以下因素

  • 从 MFC 应用程序调用托管 WebService。
    解决方案:创建一个基于 MFC 对话框的应用程序,例如 FirstWebServiceClientDlg
    在添加 WebService 之前,您需要更改项目的设置。
    右键单击解决方案资源管理器,然后单击“属性”。
    • 常规 - 使用托管扩展 = 是
    • C/C++ - 常规 - 调试信息格式 = 程序数据库 (/Zi)
    • C/C++ - 常规 - 编译为托管 = 程序集支持 (/clr)
    • C/C++ - 代码生成 - 启用最小重新生成 = 否
    • C/C++ - 代码生成 - 基本运行时检查 = 默认

现在您可以添加 WebService 了。右键单击解决方案资源管理器 -> 添加 WebService -> 在对话框中,输入 https:///firstwebservice/firstwebservice.asmx,然后单击“添加引用”按钮。
[注意:您需要使包含示例代码的 Firstwebservice 文件夹具有 Web 共享权限。]

VC.NET 会自动添加一个头文件(webservice.h)、一个 .cs 文件和一个 DLL。为了调用您的 WebService,您只需包含 webservice.h

  1. 在非托管类中将托管 C++ 对象作为成员变量。

    解决方案

    include<vcclr.h>
                       
    //Add in the dialog Class    
    //Check FirstwebServiceClient.h
    gcroot<webserviceobject*>  m_pWebServiceObject;
  2. 像在 C# 中一样使用 cookiescontainer 对象

    解决方案

    using namespace System::Net;
    // And Add in the dialog Class   //Check FirstwebServiceClient.h
    gcroot<CookieContainer*> m_pCookies ; 
    //CookiesContainer is used Enable  Session. In the Sample Code

示例代码说明

有两个文件夹

  • FirstWebServiceClient 是一个 MFC 项目
  • FirstWebService 是一个 C# 项目,用于创建 WebService

webService 包含两种方法 - 一种用于设置值,另一种用于添加值
将此文件夹设置为 WebSharing名称 FirstwebService)。

设置值,创建两个会话变量来存储值。将值添加到先前存储的值。

客户端代码

在客户端调用 SetValue 之前,您需要启用 Cookie。

void CFirstWebServiceClientDlg::OnBnClickedButtonSetval()
{   
  UpdateData(TRUE);
  m_pWebService->CookieContainer = m_pCookies;
  m_pWebService->SetValues(m_oNum1,m_oNum2);
  AfxMessageBox("Now Press Add Button")
} 

然后按“添加”按钮。您将获得正确答案。

Just Comment line
//m_pWebService->CookieContainer = m_pCookies; 

然后按“添加”按钮,并比较结果。

区别在于,每次发送 Web 请求时,它都被视为一个单独的请求。为了保留先前的值,请使用启用会话。

历史

  • 2004 年 9 月 12 日:初始发布
从 MFC(非托管)应用程序调用 WebService(托管 C# WebService),并使用 Cookie 容器保留会话。 - CodeProject - 代码之家
© . All rights reserved.