标题:[求助]C#入门经典 案例分析1 (最后怎么找不到类)
只看楼主
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
 问题点数:0 回复次数:12 
[求助]C#入门经典 案例分析1 (最后怎么找不到类)

谁做过??????

using System; using System.Data; using System.IO; using System.Xml; using Polling;

namespace PollC { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { Poll myPoll = Poll.Current(); //Console.WriteLine(myPoll.Question); DisplayPoll(myPoll); myPoll.Vote(2); Console.WriteLine("Vote registered against " + myPoll.Answers[2]); DisplayPoll(myPoll); // // TOD 在此处添加代码以启动应用程序 // } private static void DisplayPoll(Poll aPoll) { Console.WriteLine("========Poll========"); Console.WriteLine(aPoll.Question); for(int i=1;i<=(aPoll.AnswerCount);i++) { Console.WriteLine(aPoll.Answers[i] + ":"); Console.WriteLine(aPoll.Votes[i] + "votes"); } Console.WriteLine("===================="); } } }

using System; using System.Data; using System.IO; using System.Xml; //using Polling;

namespace Polling { /// <summary> /// Poll 的摘要说明。 /// </summary> public class Poll { private int[] myVotes; private string[] myAnswers; private string myQuestion; private int myAnswerCount; private string myFilename;

public static Poll Current() { Poll myPoll = new Poll(@"C:\Inetpub\wwwroot\polls.xml"); return myPoll; } private Poll(string filename) { myFilename = filename; DataSet myDataSet = new DataSet(); FileStream fsReadXml = new FileStream(filename,FileMode.Open); XmlTextReader myXmlReader = new System.Xml.XmlTextReader(fsReadXml); myDataSet.ReadXml(myXmlReader); myXmlReader.Close(); myAnswerCount = myDataSet.Tables[1].Rows.Count; myQuestion = myDataSet.Tables[0].Rows[0].ItemArray[1].ToString(); myAnswers = new string[myAnswerCount+1]; string answer; for(int i=0;i<myAnswerCount;i++) { answer = myDataSet.Tables[1].Rows[i].ItemArray[0].ToString(); myAnswers[i+1]=answer; } myVotes = new int[myAnswerCount+1]; string votes; for(int i=0;i<myAnswerCount;i++) { votes = myDataSet.Tables[1].Rows[i].ItemArray[1].ToString(); myVotes[i+1] = int.Parse(votes); } } public void Vote(int answer) { if(answer == 0 || answer>myAnswerCount) { throw(new Exception("Invalid choice of answe.")); } myVotes[answer]++; DataSet myDataSet = new DataSet(); FileStream fsReadXml = new FileStream(myFilename,System.IO.FileMode.Open); XmlTextReader myXmlReader = new System.Xml.XmlTextReader(fsReadXml); myDataSet.ReadXml(myXmlReader); myXmlReader.Close(); string votes = myDataSet.Tables[1].Rows[answer-1].ItemArray[1].ToString(); int votesInt = int.Parse(votes); DataRow myVotesRow = myDataSet.Tables[1].Rows[answer-1]; myVotesRow["Votes"] = (votesInt+1).ToString(); StreamWriter myStream = new StreamWriter(myFilename); myDataSet.WriteXml(myStream,XmlWriteMode.IgnoreSchema); myStream.Close(); } public int AnswerCount { get { return myAnswerCount; } } public string Question { get { return myQuestion; } } public string[] Answers { get { return myAnswers; } } public int[] Votes { get { return myVotes; } } public Poll() { // // TOD 在此处添加构造函数逻辑 // } } }

using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Polling;

namespace PollW { /// <summary> /// WebForm1 的摘要说明。 /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Label QuestionLabel; protected System.Web.UI.WebControls.Label AnswersLabel; public WebForm1() { Page.Init+=new System.EventHandler(Page_Init); } private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 Poll aPoll = Poll.Current(); QuestionLabel.Text = aPoll.Question; string HtmlLink = "<br /><br />"; for(int i=0;i<aPoll.AnswerCount;i++) { HtmlLink += "<a href=\"vote.aspx?id="+i+"\">Vote</a>"; HtmlLink +="&nbsp;" + aPoll.Answers[i] + "<br />"; } AnswersLabel.Text = HtmlLink; } private void Page_Init(object sender,EventArgs e) { InitializeComponent(); } #region Web 窗体设计器生成的代码 //override protected void OnInit(EventArgs e) //{ // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // //InitializeComponent(); //base.OnInit(e); //} /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }

using Polling; using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;

namespace PollW { /// <summary> /// vote 的摘要说明。 /// </summary> public class vote : System.Web.UI.Page { protected System.Web.UI.WebControls.Label titleLabel; protected System.Web.UI.WebControls.Panel resultsPanel; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 Poll aPoll = Poll.Current(); string parameter = Request.QueryString["id"]; if(parameter != null) { aPoll.Vote(int.Parse(parameter)); } titleLabel.Text = "Votes for \"" + aPoll.Question + "\""; Table myTable = new Table(); for(int i=1;i<aPoll.AnswerCount;i++) { TableRow myRow = new TableRow(); myTable.Controls.Add(myRow); TableCell myAnswerCell = new TableCell(); myAnswerCell.Text = aPoll.Answers[i]; myRow.Controls.Add(myAnswerCell); TableCell myVotesCell = new TableCell(); myVotesCell.Text = aPoll.Votes[i].ToString() + " votes"; myRow.Controls.Add(myVotesCell); } resultsPanel.Controls.Add(myTable); }

#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }

提示:

c:\inetpub\wwwroot\PollW\vote.aspx.cs(1): 找不到类型或命名空间名称“Polling”(是否缺少 using 指令或程序集引用?)

谁懂的告诉一下~~~~~~~~(第一个C#控制台的已经成功了,运行的时候是default.aspx开始出错的)

搜索更多相关主题的帖子: using 入门 summary 经典 myPoll 
2005-05-10 22:42
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
那个命名空间应该在之前有吧?你试试using一下先。去查找一下之前的文件夹有没有类似的cs文件。
2005-05-10 23:39
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
得分:0 


CS的文件有的~~~~~~~`

就是为什么USING POLLING就是不行??????
2005-05-11 13:02
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
得分:0 
双击面版的DEFAULT.ASPX.CS就是上面我贴的那

using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Polling;

namespace PollW { /// <summary> /// WebForm1 的摘要说明。 /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Label QuestionLabel; protected System.Web.UI.WebControls.Label AnswersLabel; public WebForm1() { Page.Init+=new System.EventHandler(Page_Init); } private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 Poll aPoll = Poll.Current(); QuestionLabel.Text = aPoll.Question; string HtmlLink = "<br /><br />"; for(int i=0;i<aPoll.AnswerCount;i++) { HtmlLink += "<a href=\"vote.aspx?id="+i+"\">Vote</a>"; HtmlLink +="&nbsp;" + aPoll.Answers[i] + "<br />"; } AnswersLabel.Text = HtmlLink; } private void Page_Init(object sender,EventArgs e) { InitializeComponent(); } #region Web 窗体设计器生成的代码 //override protected void OnInit(EventArgs e) //{ // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // //InitializeComponent(); //base.OnInit(e); //} /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }

2005-05-11 13:05
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
你“引用”的那个加号没展开给我看啊!
我就是说可能有dll或者要编译成dll,然后加到那个“引用”里面。
2005-05-11 13:25
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
得分:0 


楼上的老大,很奇怪,为什么我总访问不了.xml呢?说我权限不够,我用的是ADMIN的帐号了,已经是超级管理员了,还要哪里设置???(我在POLLW里面加了一个类POLL.CS,是完全复制上面控制台的,结果可以运行,但是的控制台应用程序就是没办法过去,我用IE浏览就提示POLLS.XML无权访问~~~~~`
2005-05-12 07:51
夏色沙漏
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2004-11-12
得分:0 



上面是我的设置..麻烦老大看看为什么我总访问不到.XML
是不是哪里还要设置什么?????????
2005-05-12 08:01
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
如果我告诉你我不会xml,你会不会打我?

PS:我尽量看看吧,我没弄过xml,况且我现在不在家,这里没装
2005-05-12 10:31
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
http://www.gotdotnet.com/team/upgrade/v1/aspnet_account_readme.doc http://www.yesky.com/SoftChannel/72342376223342592/20010519/180254.shtml http://groups.google.com/groups?q=aspnet+write+file+installation&hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=AC2xBZ3JCHA.1204%40cpmsftngxa08&rnum=3 找了三篇文章,不知道有没有用。。。

[此贴子已经被作者于2005-5-12 10:47:27编辑过]

2005-05-12 10:45
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
[转帖]

XML Web Service 安全性

Microsoft Corporation 2002 年 2 月

摘要: 概述 Microsoft XML Web Service 和未来开发的努力方向。

当我们谈及 XML Web Service 时,人们最关心的问题就是其安全性。

XML Web Service 安全吗?

鉴于安全性涉及诸多方面(例如身份验证和授权、数据隐私和完整性等),以及 SOAP 规范中根本没有提及安全性这一事实,我们不难理解人们为什么认为答案是否定的。但是,请不要低估了 Microsoft® XML Web Service。如今,您可以采取许多措施来创建安全的 XML Web Service。

要解决 XML Web Service 的安全性问题,我们需要考虑以下问题:

  • 要达到什么样的目的?- 仅允许授权用户访问 XML Web Service;禁止他人未经授权擅自查看消息等。
  • 如何达到预期效果?- 网络、传输层、OS、服务或应用。
  • 解决方案中需要什么级别的互操作性?- 局部或全局。

那么,我们如何确保当今 XML Web Service 的安全呢?答案就是:先回答上述问题,然后应用保护任何其他 Web 应用程序时所使用的相同技术,即:

  • 保护连接安全
  • 对交互操作进行身份验证和授权

正如您下面将要了解到的,这些技术提供了多种选择,您可以将这些选择结合起来以获得额外的效果。例如,可以将防火墙与 XML Web Service 一起使用,从而根据客户端的身份以及为他们所建立的相应规则来限制对某些功能(方法)的访问。

让我们先来回顾一下保护现有基础结构的各种选择,了解它们的功能。

保护基础结构的安全

一个安全的 XML Web Service 的核心是安全基础结构。Microsoft 提供了广泛的技术,如果把这些技术与总体安全保护计划结合起来,企业就可以有效地保护其 IT 结构的安全。正确实施的规划过程包括:

  • 详细了解潜在的环境危险(例如病毒、黑客和自然灾害)。
  • 对与危险有关的安全漏洞的后果进行预先分析并制定对策。
  • 在这种理解和分析的基础上,创建一个精心规划的实现策略,将安全保护措施应用到企业网络的各个方面。

保护连接安全

保护 XML Web Service 安全的最简单的一种方法就是确保 XML Web Service 客户端与服务器之间的连接安全。根据网络的范围和交互操作的活动配置文件,我们可以通过多种技术来达到这一目的。最流行也最广泛使用的三种技术为:基于防火墙的规则、安全套接字层 (SSL) 和虚拟专用网络 (VPN)。

如果您确切知道哪些计算机需要访问您的 XML Web Service,则可以使用防火墙规则将访问限制在已知 IP 地址的计算机范围内。如果需要限制对专用网络(例如公司的 LAN/WAN)中的计算机的访问,并且不用担心将消息内容保留为秘密(加密),那么这种技术非常有用。防火墙(例如 Microsoft Internet Security and Acceleration [ISA] Server)可以提供先进的基于策略的规则,这些规则可以根据客户端的原始位置或标识,对不同的客户端提供不同的限制。当不同的客户端访问相同 XML Web Service 上的不同功能(方法)时,这种技术很有用。

安全套接字层可用于在非托管网络(例如 Internet)上建立安全连接。SSL 可以对客户端和服务器之间发送的消息进行加密和解密。通过加密数据,您可以防止消息在传送过程中被读取。SSL 先对客户端的消息进行加密,然后将其传送到服务器。服务器接收到消息后,SSL 将对其进行解密并验证消息是否来自正确的发送者(此过程称为身份验证)。服务器或者客户端和服务器可能具有证书,这些证书用作身份验证过程的一部分在连接加密的顶层提供身份验证功能。虽然 SSL 是创建安全通信的一种非常有效的方法,但应当考虑其性能成本。Microsoft XML Web Service 既支持客户端中的集成 SSL,也支持服务器中的集成 SSL。

虚拟专用网络是专用网络的扩展,它可以连接共享网络或公共网络(如 Internet)。VPN 使您可以在两台安全连接的计算机之间发送数据。VPN 与 SSL 相似,但 VPN 是一个长期的点对点连接。这使 VPN 可以高效安全地应用于 XML Web Service,但要求建立长期的连接并保持运行才能达到这种效果。

身份验证和授权

身份验证:身份验证就是验证标识的过程,即验证某人(或某物)与其声称的人(或物)是否一致。该人或物称为“当事者”。身份验证要求证据,称为“凭据”。例如,客户端应用程序可以将密码用作凭据。如果客户端应用程序提供正确的凭据,则认为它与所声称的人或物一致。

授权:完成对当事者标识的身份验证后,便可以进行授权了。服务器通过检查有关当事者的某些访问控制信息(例如访问控制列表 [ACL])来确定访问权限。客户端可能具有不同的访问级别。例如,某些客户端可以完全访问 XML Web Service;而其他客户端则只能访问某些操作。某些客户端可以完全访问所有数据,某些客户端只能访问数据的子集,而某些客户端只能进行只读访问。

在 XML Web Service 中实现身份验证的一个简单而直接的方法是,利用信息交换所使用的协议的身份验证功能。对于大多数 XML Web Service 来说,这意味着利用 HTTP 的身份验证功能。将 Microsoft Internet Information Server (IIS) 和 ISA 服务器与 Windows 2000 服务器配合使用,能为 HTTP 提供多种身份验证机制的集成支持。

  • 基本身份验证 - 使用客户端的非安全或半安全标识,因为用户名和密码是以 base64 编码文本发送的,而该文本易于解码。如果凭据能与有效的用户帐户匹配,IIS 将授予客户端访问 XML Web Service 的权限。
  • SSL 上的基本身份验证 - 与基本身份验证相同,唯一区别在于通信通道被加密,从而保护了用户名和密码。对 Internet 方案而言,这是一个很好的选择,但使用 SSL 会对性能产生很大影响。
  • 简要身份验证 - 使用散列以安全方式传送客户端凭据。但是,这种方法可能不会受到用于构建 XML Web Service 客户端的开发人员工具的广泛支持。如果凭据能与有效的用户帐户匹配,IIS 将授予客户端访问 XML Web Service 的权限。
  • 集成 Windows 身份验证 - 主要用于 Intranet 方案。使用 NTLM 或 Kerberos。客户端必须属于服务器所在的域,或者属于服务器域的托管域。如果凭据能与有效的用户帐户匹配,IIS 将授予客户端访问 XML Web Service 的权限。
  • SSL 上的客户端证书 - 要求每个客户端获取一个证书。证书被映射至用户帐户,IIS 将使用这些证书来授权对 XML Web Service 的访问。尽管目前数字证书尚未广泛使用,但这仍然不失为 Internet 方案的一种可行选择。这种方法可能不会受到用于构建 XML Web Service 客户端的开发人员工具的广泛支持。只能通过 SSL 连接使用这种方法,因此性能可能是一个需要考虑的问题。

从 XML Web Service 实施者的角度来看,使用上述任何一种身份验证机制都有一个好处,即,无需在 XML Web Service 中进行代码更改,因为在调用 XML Web Service 之前,IIS/ISA 服务器将执行所有的身份验证和 ACL 授权检查。但是,在执行客户端时,还需要完成其他一些工作。客户端应用程序需要响应服务器的身份验证凭据请求。

在 XML Web Service 中进行身份验证的其他方法包括:使用第三方服务(例如 Microsoft® .NET Passport 中的服务),使用 Microsoft ASP.NET 的会话功能,或者创建自定义身份验证方法。

下一步:互操作性

您可能会发现,如今,用于 Web 应用程序安全保护的标准技术可以单独使用或组合使用,以建立安全的 XML Web Service。这些技术建立在丰富的经验基础之上,并且非常有效。不过,它们并没有在 XML Web Service 体系结构中提供集成解决方案。随着 XML Web Service 方案日益复杂(例如跨托管边界以及分布于多个系统或企业中),XML Web Service 实施者需要创建有效但并不提供普遍互操作性的自定义解决方案。

为满足这些需要并增强 XML Web Service 的互操作性,Microsoft 及其合作伙伴正在制定一套安全规范。该规范建立于 SOAP 规范的扩展性机制之上,提供集成至 XML Web Service 结构中的增强型安全保护功能。

这套安全规范的核心是 XML Web Service 安全语言 (WS-Security),它为 SOAP 消息提供了三种增强功能:凭据传送、消息集成和消息保密。这些功能自身不能提供完整的安全保护解决方案;但 WS-Security 是一个构建块,它可以与基础结构和其他 XML Web Service 协议结合使用,以满足各种应用程序的安全保护要求。Microsoft Global XML Web Service 体系结构是 WS-Security 和相关规范的主要内容,它为 XML Web Service 基础结构的发展提供框架。

资源

Web Service 安全保护文章

Authentication and Authorization(英文)

保护 XML Web 服务免受黑客攻击,第一部分

保护 XML Web 服务免受黑客攻击,第二部分

Real SOAP Security(英文)

How to Secure Web Services with SSL(英文)

使用 Microsoft SOAP Toolkit 2.0 建立安全 Web 服务

重要的 Microsoft 安全保护参考资料

企业安全的最佳方案

TechNet Security Home page(英文)

Web Site Security(英文)

MSDN Security How-To(英文)

Microsoft Internet Security and Acceleration (ISA) Server(英文)

2005-05-12 10:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-17839-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.711512 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved