热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

如何让WebServer返回指定XML内容

通过创立WEBServer代理可以当作本地类应用,但能不能返回指定的XML呢?比如通过checkpass服务检测帐号和密码之后要返回该用户拥有的权限列表。怎么实现呢?ASP.NETWeb服务支撑在公共语

  通过创立WEBServer代理可以当作本地类应用,但能不能返回指定的XML呢?比如通过checkpass服务检测帐号和密码之后要返回该用户拥有的权限列表。怎么实现呢?


  ASP.NET Web服务支撑在公共语言运行时中支撑的所有基础数据类型,包含String,integer,Long等等。除了简略的基础数据类型之外,还支撑基础数据类型的数组。


  但是,更有趣的是支撑用户定义的类和结构体。基础上,任何可由XSD模式代表的类型都是可以作为ASP.NET的参数或返回类型。


  通过一个星期的摸索,解决了这个标题,并学习了如何读取和输出XML文档;数据库把持;WebServer的创立和引用。下面就部分源码供初学习者参考,不足之此请指正。


/*CheckLogin服务*/

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using mysql.SQL;
using myfunc.Common;


///


/// CheckLogin 的摘要阐明
///

[WebService(Namespace = "http://localhost/")]
[WebServiceBinding(COnformsTo= WsiProfiles.BasicProfile1_1)]
public class CheckLogin : System.Web.Services.WebService {

    public CheckLogin () {

        //假如应用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

    //[WebMethod(Description = "Login", EnableSession = true)]
    [WebMethod]
    public checkuser Login(string sUserCode, string sPassword)
    {
        checkuser objcheckuser= new checkuser();
        string sCheckLogin = ConfigurationManager.AppSettings["strCheckLogin"];
        SqlShell objShell = new SqlShell();
        SqlCommand objCommand = new SqlCommand(sCheckLogin);
        objCommand.CommandType = CommandType.Text;
        objCommand.Parameters.AddWithValue("@sUserCode", sUserCode);
        objCommand.Parameters.AddWithValue("@sPassword", sPassword);
        DataTable objDataTable = objShell.executeDataSet(ref objCommand).Tables[0];
        objcheckuser.logined = (objDataTable.Rows.Count > 0);
        if (objcheckuser.logined)
        {
            //帐号和密码准确,反回帐号信息
            DataRow objDataRow = objDataTable.Rows[0];
            objcheckuser.userid = objDataRow["UserID"].ToString().Trim(); ;
            objcheckuser.pass = objDataRow["Pass"].ToString().Trim();
            objcheckuser.username = objDataRow["UserName"].ToString().Trim();

            //检查Allow字段是否为空
            if (objDataRow.IsNull("Allow")) { objcheckuser.allow = ""; }
            else { objcheckuser.allow = objDataRow["Allow"].ToString().Trim(); }

            menulist objmenulist = new menulist(objDataRow["UserID"].ToString().Trim());
            objcheckuser.menuxml = objmenulist.buf;//返回菜单列表的XML字符串
                 

        }
        return objcheckuser;

    }

    public class checkuser
    {
        public bool logined;
        public string userid;
        public string pass;
        public string username;
        public string allow;
        public string menuxml;//返回菜单列表的XML字符串

    }

}

/*CheckLogin服务结束*/

 

/*menulist 类开端*/

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using Singcn.SQL;
using System.Data.SqlClient;
using System.IO;
using System.Text;

namespace myfunc.Common
{
    ///


    /// PubFunc 的摘要阐明
    ///

    public class menulist
    {
        public XmlWriterSettings settings = new XmlWriterSettings();
        public XmlWriter writer = null;
        public string buf = "";
        public SqlShell objShell;
        public SqlCommand objCommand;
        public DataTable objDataTable;

        public menulist(string userid)
        {
            objShell = new SqlShell();
            objCommand = new SqlCommand("select * from qxdmb order by jb,px,qxdm");
            objCommand.CommandType = CommandType.Text;
            objDataTable = objShell.executeDataSet(ref objCommand).Tables[0];

            StringWriter writerstr = new StringWriter();
            settings.Indent = true;
            settings.Encoding = Encoding.GetEncoding("utf-8");
            try
            {
                writer = XmlWriter.Create(writerstr, settings);

                writer.WriteStartDocument();
                writer.WriteStartElement("DSTreeRoot");
                writer.WriteAttributeString("text", "后台治理系统-[" userid "]");

推荐阅读
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
  • 通过自定义 `TextView`,实现了在用户点击或焦点变化时动态调整字体颜色的效果。该方法利用了 `ColorStateList` 和 `Selector` 资源文件,确保了界面交互的流畅性和视觉效果的提升。具体实现中,通过重写 `onTouchEvent` 和 `onFocusChanged` 方法,精确控制了颜色变化的时机和状态。此外,还对性能进行了优化,确保在高频率操作下依然保持高效响应。 ... [详细]
  • 在第六章中,我们将深入探讨MySQL中的多表查询技术,包括联结查询和子查询。联结查询通过将两个或多个表进行连接,基于连接条件生成结果集。常见的联结类型有内联结、外联结和全外联结。交叉联结(CROSS JOIN)虽然使用较少,但其原理是生成所有可能的组合,类似于笛卡尔积的概念。此外,子查询则是在一个查询语句中嵌套另一个查询,用于获取更复杂的数据集。本章将通过实例详细讲解这些查询方法的应用和优化技巧。 ... [详细]
  • 如何在Oracle ASM_Diskgroup中重命名现有磁盘
    如何在Oracle ASM_Diskgroup中重命名现有磁盘 ... [详细]
  • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
    在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
  • 在探讨如何高效处理大规模数据报表的分页展示之前,首先需要明确导致报表加载缓慢的主要原因。通常情况下,这主要是由于两个方面:一是查询条件过于宽泛,使得数据库返回的结果集包含数百万甚至更多的记录;二是前端渲染性能不足,无法高效处理大量数据。为了优化这一过程,可以从以下几个方面入手:优化查询条件,减少不必要的数据返回;采用分页查询技术,每次仅加载所需的数据;利用缓存机制,减少对数据库的频繁访问;提升前端渲染效率,使用虚拟滚动等技术提高用户体验。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 如何运用蒙特卡洛方法计算NPV:计算机专业毕业设计遇到难题怎么办?
    许多计算机科学专业的学生在大学期间都会遇到这样的困扰:课堂上教授的内容往往偏向理论,实际应用的知识点讲解得较为浅显和概括,导致在进行毕业设计时,如运用蒙特卡洛方法计算净现值(NPV)等复杂问题时感到无从下手。本文旨在探讨如何通过深入理解和实践蒙特卡洛模拟技术,解决这类计算难题,为学生的毕业设计提供实用指导。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 在Ubuntu系统中,由于预装了MySQL,因此无需额外安装。通过命令行登录MySQL时,可使用 `mysql -u root -p` 命令,并按提示输入密码。常见问题包括:1. 错误 1045 (28000):访问被拒绝,这通常是由于用户名或密码错误导致。为确保顺利连接,建议检查MySQL服务是否已启动,并确认用户名和密码的正确性。此外,还可以通过配置文件调整权限设置,以增强安全性。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 在Spring框架中,基于Schema的异常通知与环绕通知的实现方法具有重要的实践价值。首先,对于异常通知,需要创建一个实现ThrowsAdvice接口的通知类。尽管ThrowsAdvice接口本身不包含任何方法,但开发者需自定义方法来处理异常情况。此外,环绕通知则通过实现MethodInterceptor接口来实现,允许在方法调用前后执行特定逻辑,从而增强功能或进行必要的控制。这两种通知机制的结合使用,能够有效提升应用程序的健壮性和灵活性。 ... [详细]
author-avatar
林亚培_724
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有