.NET平台把其它域名下的数据表内容列出来,比如新闻表(两个网站不在同一服务器)

简介:

首先,为了安全起见,服务器的SQLSERVER不开放远程访问,这样,我们有两种方案可以选择,其一就是webservice,其二就是比较简单的XML,今天我主要讲XML。

先说明一下,两个网站域名为a.com和b.com,a.com是b.com的分站,它们的新闻是共享的,就是一样的,所以没必要在a.com数据库里再重复插入一批数据了。

解决方案:在b.com里建立一个开放的XML文件,供a.com访问,这样做是安全的,可行的。

首先在b.com里建立这样一个生成XML的文件:

 public partial class _Default : System.Web.UI.Page
    {
        int rCount = 10;
        int channelId = 1;
        int classId = 1;
 
        protected void Page_Load(object sender, EventArgs e)
        {
 
 

this.rCount = Request.QueryString.AllKeys.Contains("r") ?

int.Parse(Request.QueryString["r"].Trim()) : this.rCount;

            this.channelId = Request.QueryString.AllKeys.Contains("ch") ?
                             int.Parse(Request.QueryString["ch"]) : this.channelId;
 
 

this.classId = Request.QueryString.AllKeys.Contains("cl") ?

int.Parse(Request.QueryString["cl"]) : this.classId;

 
            CreateXML();
        }
 
        /// <summary>
        /// 从数据库中提取数据,生成XML文件
        /// </summary>
        /// <returns></returns>
        public string CreateXML()
        {
            Response.Clear(); //删除所有缓存中的HTML输出
            Response.ContentType = "text/xml";
            // (ContentType 属性指定响应的 HTTP 内容类型) 页面类型为xml,默认为HTML,
            常见的还有image/GIF 和image/JPEG
 
            System.Data.DataSet data = B2ceduData.Data.B2cData.News(this.rCount, 
            this.channelId, this.classId);
            if (data != null)
            {
                data.WriteXml(Response.OutputStream);
            }
 
            Response.Flush();//立即发送缓冲区中的输出(只有编译产生了至少256字节的数据,
                             才能在执行Response.Flush()以后将信息发到客户端并显示)
            Response.End();
 
            return data.GetXml();
        }
    }
}
 
下面程序接上面的,从b.com数据库里取出新闻列表

    public static class B2cData
    {
        /// <summary>
        /// 获取热门课程列表XML
        /// </summary>
        /// <param name="RowCount">数据行数</param>
        /// <param name="ChannelID">频道ID</param>
        /// <param name="ClassID">分类ID</param>
        /// <returns></returns>
        public static DataSet News(int RowCount, int ChannelID, int ClassID)
        {
            return News(RowCount, ChannelID, ClassID, DBConnectionHelper.ConnString);
        }
 
        /// <summary>
        /// 获取热门课程列表XML
        /// </summary>
        /// <param name="RowCount">数据行数</param>
        /// <param name="ChannelID">频道ID</param>
        /// <param name="ClassID">分类ID</param>
        /// <param name="ClassID">数据库连接字</param>
        /// <returns></returns>
        public static DataSet News(int RowCount, int ChannelID, int ClassID, string connStr)
        {
            try
            {
                System.Text.StringBuilder sql = new System.Text.StringBuilder();
                sql.Append(@"SELECT ");
                sql.Append(RowCount == 0 ? "" : string.Format("TOP {0} ", RowCount));
                sql.Append(@"a.ArticleID,a.ChannelID,a.ClassID,a.Title,a.Subheading,
                             a.UpdateTime,a.CreateTime,a.LinkUrl,a.ChannelDir ");
 
 

sql.Append(@"FROM PE_Article a LEFT OUTER JOIN PE_Channel b ON

a.ChannelID=b.ChannelID ");

                sql.Append(@"WHERE   ");
                sql.Append(string.Format(@" a.ChannelID={0} ", ChannelID));
                sql.Append(string.Format(@"AND a.ClassID={0} ", ClassID));
                sql.Append(@"ORDER BY A.UPDATETIME DESC");
                DataSet ds = DBHelper.SELECT(sql.ToString(), connStr);
                ds.DataSetName = DBConnectionHelper.InitialCatalog;
                ds.Tables[0].TableName = "PE_Article";
                return ds;
            }
            catch
            {
                return null;
            }
        }
 
    }

OK,现在一个扩展名为aspx的xml文件已经建立好了,假设它的数径为www.b.com/news.aspx

好了,下面两个程序就是a.com下面的,它们将从b.com的news.aspx页面下得到最新的新闻列表

 public partial class FromXmlGetDatum : System.Web.UI.Page
    {
        Web.Service.NewsService webRequest = null;
        System.Text.StringBuilder html;
        const int MAXROW = 10;
        public FromXmlGetDatum()
        {
            this.webRequest = new Web.Service.NewsService();
        }
 
        protected void Page_Load(object sender, EventArgs e)
        {
            GetLatestNews("5.1", "1");
            Response.Write(html);
        }
 
        // 获取最新资讯
        void GetLatestNews(string id, string newsCategoryID)
        {
            html = new System.Text.StringBuilder();
 
 

html.Append("<div id=\"list_" + id.Replace(".", "") + "_1\" class=\"conn\"

style=\"display:block;\">");

            html.Append("<table width=\"660\" border=\"0\" cellspacing=\"1\" 
                         cellpadding=\"2\" bgcolor=\"#e9e9e9\" style=\"float:left;\">");
            if (!string.IsNullOrEmpty(newsCategoryID))
            {
 
 

List<Web.Service.XMLLastestNews> datas = this.webRequest.

RequestData(newsCategoryID, MAXROW).Cast<Web.Service.XMLLastestNews>().ToList();

 
                if (datas.Count > 0)
                {
                    foreach (var item in datas)
                    {
 
 

html.Append("<tr bgcolor=\"#FFFFFF\"><td><a href='" +

item.LinkUrl + "/" + Convert.ToDateTime(item.CreateTime).ToString("yyyyMM") + "/" +

item.ChannelDir + "_" + item.ArticleID + ".shtml' target='_blank'>" +

item.Title + "</a></td><td>"+item.CreateTime+"</td><td>"+item.Subheading+"</td></tr>");

                    }
                }
                else
                {
                    html.Append("<tr bgcolor=\"#FFFFFF\"><td width=\"100%\"></td></tr>");
                }
            }
            else
            {
                html.Append("<tr bgcolor=\"#FFFFFF\"><td width=\"100%\"></td><td></td><td></td></tr>");
            }
            html.Append("</table>");
            html.Append("</div>");
        }
 
    }

 

namespace Web.Service
{
 
    public class NewsService
    {
 
        const string REQUESTURL = "http://www.b.com/news.aspx?ch={0}&cl=1&r={1}"; //从这个XML文件里获取数据
 
        #region IWebRequestService 成员
        /// <summary>
        /// 将XML对象转换为LIST实体返回
        /// </summary>
        /// <param name="id"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        public List<IWebRequestEntity> RequestData(string id, int num)
        {
            List<XMLLastestNews> data;
 
 

System.Xml.Linq.XElement xdoc = System.Xml.Linq.XElement.Load(

string.Format(REQUESTURL, id, num));

            var items = xdoc.Descendants("PE_Article").Select(item =>
   new Web.Service.XMLLastestNews
                                         {
   ArticleID = item.Element("ArticleID").Value,
                                        ChannelID = item.Element("ChannelID").Value,
  ClassID = item.Element("ClassID").Value,
                                        Subheading = "",
                                        Title = item.Element("Title").Value,
                                        UpdateTime = item.Element("UpdateTime").Value,
                                        CreateTime = item.Element("CreateTime").Value,
                                        LinkUrl = item.Element("LinkUrl").Value,
                                        ChannelDir = item.Element("ChannelDir").Value,
                                                                          }
                                                                  );
            data = items.ToList();
            return data.Cast<IWebRequestEntity>().ToList();
        }
 
        #endregion
    }
}
目录
相关文章
|
1月前
|
JavaScript 前端开发 程序员
如何打开一个网站让里面的内容是加载另一个网站域名的内容并且看不出来-优雅草央千澈-其次加入禁止右键点击-禁止选择文本和复制以及禁止键盘快捷键
如何打开一个网站让里面的内容是加载另一个网站域名的内容并且看不出来-优雅草央千澈-其次加入禁止右键点击-禁止选择文本和复制以及禁止键盘快捷键
47 22
如何打开一个网站让里面的内容是加载另一个网站域名的内容并且看不出来-优雅草央千澈-其次加入禁止右键点击-禁止选择文本和复制以及禁止键盘快捷键
|
6天前
|
弹性计算 运维 网络安全
阿里云轻量应用服务器产品解析与搭建个人博客网站教程参考
轻量应用服务器(Simple Application Server)作为阿里云面向单机应用场景推出的云服务器产品,以其一键部署、一站式管理、高性价比等特性,深受个人开发者、中小企业及入门级用户的喜爱。本文将全面解析阿里云轻量应用服务器的产品优势、应用场景、使用须知,以及使用轻量应用服务器搭建个人博客网站的详细教程,帮助用户更好地了解和使用这一产品。
|
9天前
|
数据采集 搜索推荐 定位技术
网站服务器管理中静态长效代理的价值与作用
在网站服务器管理中,使用静态长效代理具有多重优势。其稳定性与持久性确保长时间稳定运行,简化网络管理,减少配置更改;能访问受限资源,提升工作效率,增强安全性与信息保护,优化网络营销策略,如SEO和关键词排名监测。静态代理是现代网络管理不可或缺的工具。
21 0
|
1月前
|
弹性计算 运维 Ubuntu
使用阿里云服务器自动搭建WordPress网站流程,超简单by系统运维管理OOS
本教程介绍如何使用阿里云服务器(ECS)和系统运维管理OOS自动搭建WordPress网站,支持Ubuntu、CentOS及Alibaba Cloud Linux等操作系统。前提条件包括ECS实例处于运行中、有公网IP且安全组已开启80端口。安装步骤简单:进入ECS快速购买控制台选择预装WordPress,确认下单后通过管理控制台查看实例详情并开放安全组端口。最后,通过实例公网IP访问,出现WordPress登录页即表示安装成功。
|
3月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
64 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
3月前
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
73 2
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
2月前
|
域名解析 弹性计算 安全
阿里云服务器租用、注册域名、备案及域名解析完整流程参考(图文教程)
对于很多初次建站的用户来说,选购云服务器和注册应及备案和域名解析步骤必须了解的,目前轻量云服务器2核2G68元一年,2核4G4M服务器298元一年,域名注册方面,阿里云推出域名1元购买活动,新用户注册com和cn域名2年首年仅需0元,xyz和top等域名首年仅需1元。对于建站的用户来说,购买完云服务器并注册好域名之后,下一步还需要操作备案和域名绑定。本文为大家展示阿里云服务器的购买流程,域名注册、绑定以及备案的完整流程,全文以图文教程形式为大家展示具体细节及注意事项,以供新手用户参考。
|
2月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
2月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
5月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
68 7

热门文章

最新文章