??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品无码久久久久去q,午夜精品久久影院蜜桃,91精品国产91久久久久福利http://www.shnenglu.com/meglory/category/16292.htmlcoding for lifezh-cnMon, 16 May 2011 14:52:04 GMTMon, 16 May 2011 14:52:04 GMT60[问题解决]System.UnauthorizedAccessException: 对\径“”的讉K被拒l?/title><link>http://www.shnenglu.com/meglory/archive/2011/05/16/146464.html</link><dc:creator>meglory</dc:creator><author>meglory</author><pubDate>Mon, 16 May 2011 03:20:00 GMT</pubDate><guid>http://www.shnenglu.com/meglory/archive/2011/05/16/146464.html</guid><wfw:comment>http://www.shnenglu.com/meglory/comments/146464.html</wfw:comment><comments>http://www.shnenglu.com/meglory/archive/2011/05/16/146464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/meglory/comments/commentRss/146464.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/meglory/services/trackbacks/146464.html</trackback:ping><description><![CDATA[<p>ASP.NET<br><br>通过BSl构向ftp上传文g的时候,出现权限错误Q不能创建文件?br><br>搜烦了半天之后,该文件夹权限Q更改servu讄Q都无济于事?br><br>最l还是这个办法解决了问题Q?br><br><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; FONT-SIZE: 14px" class=Apple-style-span></p> <p style="PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">要将 ASP.NET 讉K权限授予某个文gQ请在资源管理器中右击该文gQ选择“属?#8221;Q然后选择“安全”选项卡。单?#8220;d”d适当的用hl。突出显C?ASP.NET 帐户Q选中所需讉K权限对应的框?br>?Web.Config 中添加如下代?OK?/p> <p style="PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><authentication mode="Windows"/><br><identity impersonate="true" userName="用户? password="密码"/>   //dq句</p> <p></span></span><br> </p> <img src ="http://www.shnenglu.com/meglory/aggbug/146464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/meglory/" target="_blank">meglory</a> 2011-05-16 11:20 <a href="http://www.shnenglu.com/meglory/archive/2011/05/16/146464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转蝲QWeb Service入门文章http://www.shnenglu.com/meglory/archive/2011/03/16/141996.htmlmeglorymegloryWed, 16 Mar 2011 09:31:00 GMThttp://www.shnenglu.com/meglory/archive/2011/03/16/141996.htmlhttp://www.shnenglu.com/meglory/comments/141996.htmlhttp://www.shnenglu.com/meglory/archive/2011/03/16/141996.html#Feedback0http://www.shnenglu.com/meglory/comments/commentRss/141996.htmlhttp://www.shnenglu.com/meglory/services/trackbacks/141996.html

http://www.cnblogs.com/salonliudong/archive/2007/06/16/785604.html

一、Web Service?/strong>

 

1.1?/span>Web Service基本概念

Web Service也叫XML Web Service WebService是一U可以接收从Internet或?/span>Intranet上的其它pȝ中传递过来的hQ轻量的独立的通讯技术。是:通过SOAP?/span>Web上提供的软g服务Q?/span>WSDL文gq行说明Qƈ通过UDDIq行注册?/span>

XMLQ?/span>(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万l网l,?/span>Soap的基?/span>

SoapQ?/span>(Simple Object Access Protocol)单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI扑ֈ你的WSDL描述文档后,他通过可以SOAP调用你徏立的Web服务中的一个或多个操作?/span>SOAP?/span>XML文档形式的调用方法的规范Q它可以支持不同的底层接口,?/span>HTTP(S)或?/span>SMTP?/span>

WSDLQ?/span>(Web Services Description Language) WSDL 文g是一?/span> XML 文Q用于说明一l?/span> SOAP 消息以及如何交换q些消息。大多数情况下由软g自动生成和用?/span>

UDDI (Universal Description, Discovery, and Integration) 是一U根据描q文来引导pȝ查找相应服务的机制?/span>UDDI利用SOAP消息机制Q标准的XML/HTTPQ来发布Q编辑,览以及查找注册信息。它采用XML格式来封装各U不同类型的数据Qƈ且发送到注册中心或者由注册中心来返回需要的数据?/span>

1.2?/span>XML Web Service的特?/span>

Web Service的主要目标是跨^台的可互操作性。ؓ了实现这一目标Q?/span>Web Service 完全ZXMLQ可扩展标记语言Q?/span>XSDQ?/span>XML SchemaQ等独立于^台、独立于软g供应商的标准Q是创徏可互操作的、分布式应用E序的新q_。因此?/span>Web Service有许多优?/span>:

1、跨防火墙的通信

 如果应用E序有成千上万的用户Q而且分布在世界各圎ͼ那么客户端和服务器之间的通信是一个棘手的问题。因为客L和服务器之间通常会有防火墙或者代理服务器。传l的做法是,选择用浏览器作ؓ客户端,写下一大堆ASP面Q把应用E序的中间层暴露l最l用戗这样做的结果是开发难度大Q程序很隄护?/span> 要是客户端代码不再如此依赖于HTML表单Q客L的编E就单多了。如果中间层lg换成Web Service的话Q就可以从用L面直接调用中间层lgQ从而省掉徏?/span>ASP面的那一步。要调用Web ServiceQ可以直接?/span>Microsoft SOAP Toolkit?/span>.NETq样?/span>SOAP客户端,也可以用自己开发的SOAP客户端,然后把它和应用程序连接v来。不仅羃短了开发周期,q减了代码复杂度,q能够增强应用程序的可维护性。同Ӟ应用E序也不再需要在每次调用中间层组件时Q都跌{到相应的“l果?#8221;?/span>

2、应用程序集?/span>

企业U的应用E序开发者都知道Q企业里l常都要把用不同语言写成的、在不同q_上运行的各种E序集成hQ而这U集成将p很大的开发力量。应用程序经帔R要从q行的一CZ的程序中获取数据Q或者把数据发送到L或其它^台应用程序中厅R即使在同一个^CQ不同Y件厂商生产的各种软g也常帔R要集成v来。通过Web ServiceQ应用程序可以用标准的方法把功能和数?#8220;暴露”出来Q供其它应用E序使用?/span>

3?/span>B2B的集?/span>

B2B 指的?/span>Business to BusinessQ?/span>as in businesses doing business with other businesses,商家(泛指企业)对商家的电子商务Q即企业与企业之间通过互联|进行品、服务及信息的交换。通俗的说法是指进行电子商务交易的供需双方都是商家(或企业、公?/span>)Q她们用了Internet的技术或各种商务|络q_Q完成商务交易的q程?/span>

Web Service?/span>B2B集成成功的关键。通过Web ServiceQ公司可以只需把关键的商务应用“暴露”l指定的供应商和客户Q就可以了,Web Serviceq行?/span>Internet上,在世界Q何地斚w可轻易实玎ͼ其运行成本就相对较低?/span>Web Service只是B2B集成的一个关键部分,q需要许多其它的部分才能实现集成?/span> ?/span>Web Service来实?/span>B2B集成的最大好处在于可以轻易实C操作性。只要把商务逻辑“暴露”出来Q成?/span>Web ServiceQ就可以让Q何指定的合作伙伴调用q些商务逻辑Q而不他们的pȝ在什么^Cq行Q用什么开发语a。这样就大大减少了花?/span>B2B集成上的旉和成本?/span>

4、Y件和数据重用

Web Service在允讔R用代码的同时Q可以重用代码背后的数据。?/span>Web ServiceQ再也不必像以前那样Q要先从W三方购买、安装Y件组Ӟ再从应用E序中调用这些组Ӟ只需要直接调用远端的Web Service可以了。另一UY仉用的情况是,把好几个应用E序的功能集成v来,通过Web Service “暴露”出来Q就可以非常Ҏ地把所有这些功能都集成C的门L点中Qؓ用户提供一个统一的、友好的界面?/span> 可以在应用程序中使用W三方的Web Service 提供的功能,也可以把自己的应用程序功能通过Web Service 提供l别人。两U情况下Q都可以重用代码和代码背后的数据?/span>

从以上论q可以看出,Web Service 在通过Webq行互操作或q程调用的时候是最有用的。不q,也有一些情况,Web ServiceҎ不能带来M好处Q?/span>Web Service有一下缺点:

1?/span> 单机应用E序

目前Q企业和个hq用着很多桌面应用E序。其中一些只需要与本机上的其它E序通信。在q种情况下,最好就不要?/span>Web ServiceQ只要用本地?/span>API可以了?/span>COM非常适合于在q种情况下工作,因ؓ它既又快。运行在同一台服务器上的服务器Y件也是这栗当?/span>Web Service 也能用在q些场合Q但那样不仅消耗太大,而且不会带来M好处?/span>

2?/span> 局域网的一些应用程?/span>

在许多应用中Q所有的E序都是?/span>Windowsq_下?/span>COMQ都q行在同一个局域网上。在q些E序里,使用DCOM会比SOAP/HTTP有效得多。与此相cMQ如果一?/span>.NETE序要连接到局域网上的另一?/span>.NETE序Q应该?/span>.NET Remoting。其实在.NET Remoting中,也可以指定?/span>SOAP/HTTP来进?/span>Web Service 调用。不q最好还是直接通过TCPq行RPC调用Q那样会有效得多?/span>

1.3?/span>XML Web Service的应?/span>

1.最初的 XML Web Service 通常是可以方便地q入应用E序的信息来源,如股h根{天气预报、体育成l等{?/span>

2.?/span> XML Web Service 方式提供现有应用E序Q可以构建新的、更强大的应用程序,q利?/span> XML Web Service 作ؓ构造块?/span>

例如Q用户可以开发一个采购应用程序,以自动获取来自不同供应商的hg息,从而用户可以选择供应商,提交订单Q然后跟t货物的q输Q直x到货物。而供应商的应用程序除了在Web上提供服务外Q还可以使用XML Web Service查客L信用、收取货ƾ,q与货运公司办理货运手箋?/span>

二?/span>Web Service开?/span>

.NETq_内徏了对Web Service的支持,包括Web Service的构建和使用。与其它开发^C同,使用.NETq_Q你不需要其他的工具或?/span>SDK可以完?/span>Web Service的开发了?/span>.NET Framework本n全面支?/span>Web ServiceQ包括服务器端的h处理器和对客L发送和接受SOAP消息的支持。下来我们就一步一步的?/span>Microsoft Visual Studio .NET 2005Q后面简U?/span>VS.Net 2005Q创建和使用一个简单的Web Service?/span>

2.1、用创徏一个最单的Web Service

首先Q打开VS2005,打开文g-新徏-|站Q选择“ASP.NET Web服务?br>


查看Service.cs代码Q你会发?/span>VS.Net 2005已经?/span>Web Service文g建立了缺省的框架。原始代码ؓQ?/span>

 1 using System;
 2 using System.Web;
 3 using System.Web.Services;
 4 using System.Web.Services.Protocols
 5 [WebService(Namespace = "http://tempuri.org/")]
 6 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 7 public class Service : System.Web.Services.WebService
 8 {
 9     public Service () 
10         //如果使用设计的组Ӟ请取消注释以下行 
11         //InitializeComponent(); 
12     }
13     [WebMethod]
14     public string HelloWorld() {
15         return "Hello World";
16     }
17 }

 

默认工程里面已经有一?/span>Hello World的方法了Q直接运行看看效果,


点击昄面上图中的“HelloWorld”链接,跌{C一面

再点?/span>调用按钮Q就可以看到?/span>XML格式q回?/span>Web Servicel果下图。说明我们的Web Service环境没有问题Q而且q初步接触了一下最单的Web Service?br>

2.2、创Z个带?/span>?/span>功能?/span>Web Service

       

上面我们宏观的了解了webserviceQ其实它是个对外的接口,里面有函数可供外部客戯?/span>(注意:里面同样有客户不可调用的函数).假若我们是服务端,我们写好了个webservice,然后把它l了客户(同时我们l了他们调用规则),客户可以在从服务端获取信息时处于一个相寚w明的状?/span>.x客户不了?/span>(也不需?/span>)其过E?/span>,他们只获取数?/span>.在代码文仉,如果我们写了一个函数后,希望此函数成为外部可调用的接口函?/span>,我们必须在函C面添上一行代?/span>[WebMethod],如果你的函数没有q个x,它将不能被用户引用?/span>WebMethodҎ有几U属性需要说明:

1?/span>WebMethod ?/span> BufferResponse 属?/span> 启用?/span> XML Web services Ҏ响应的缓册Ӏ当讄?/span> trueQ默认设|)ӞASP.NET 在将响应向下发送到客户端之前对整个响应q行~冲?/span>

[WebMethod(BufferResponse=false)]

2?/span>WebMethod ?/span> CacheDuration 属?/span> 启用?/span> XML Web services Ҏl果的缓存?/span>ASP.NET 缓存每个唯一参数集的l果?/span>

[WebMethod(CacheDuration=60)]

3?/span>WebMethod ?/span> Description 属?/span> 提供 XML Web services Ҏ的说明,该说明将昄在服务帮助页上。除非另外指定,默认gؓI字W串?/span>

[WebMethod(Description="我的Ҏ")]

4?/span>WebMethod ?/span> EnableSession 属?/span> 启用 XML Web services Ҏ的会话状态。一旦启用,XML Web services 可以从 HttpContext.Current.Session 中直接访问会话状态集合,或者,如果它是?/span> WebService 基类l承的,则可以?/span> WebService.Session 属性来讉K会话状态集合。除非另外指定,默认gؓ false?/span>

[WebMethod(EnableSession=true)]

5?/span>WebMethod ?/span> MessageName 属?/span>) ?/span> XML Web services 能够唯一定使用别名的重载方法。除非另外指定,默认值是Ҏ名称。当指定 MessageName Ӟl果 SOAP 消息反映该名称Q而不是实际的Ҏ名称?/span>

[WebMethod(MessageName="AddDoubles")]

6?/span>WebMethod ?/span> TransactionOption 属?/span> ?/span> XML Web services Ҏ可以作ؓ事务的根对象参与。虽然可以将 TransactionOption 属?/span> 讄?/span> TransactionOption 枚D的Q意|?/span> XML Web services Ҏ仅有两个可能的行为:它不参与事务或它创徏一个新事务?/span>

using System.EnterpriseServices;

[WebMethod(TransactionOption=TransactionOption.RequiresNew)]

下来我们开始编写一个简单的Web Service 的例子?/span>

先把默认?/span>HelloWorldҎ注释掉,单的写了求加减乘除运的四个ҎQ?/span>

 1 using System;
 2 using System.Web;
 3 using System.Web.Services;
 4 using System.Web.Services.Protocols;
 5 
 6 [WebService(Namespace = "http://tempuri.org/")]
 7 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 8 public class Service : System.Web.Services.WebService
 9 {
10     public Service () {
11         //如果使用设计的组Ӟ请取消注释以下行 
12         //InitializeComponent(); 
13     }
14     //[WebMethod]
15     //public string HelloWorld() {
16     //    return "Hello World";
17     //}            
18     [WebMethod(Description="求和的方?/span>")]
19     public double addition(double i,double j)
20     {
21         return i + j;
22     }
23     [WebMethod(Description="求差的方?/span>")]
24     public double subtract(double i, double j)
25     {
26         return i - j;
27     }
28     [WebMethod(Description="求积的方?/span>")]
29     public double multiplication(double i, double j)
30     {
31         return i * j;
32     }
33     [WebMethod(Description="求商的方?/span>")]
34     public double division(double i, double j)
35     {
36         if (j != 0)
37             return i / j;
38         else
39             return 0
40     }
41 }
42 
q行可以看到我们自己写的可以被调用的ҎQ如下图Q?br>
同样点击additionҎ,q入additionҎ的调用页?br>

在参C面输入参?/span>i=3,j=3,如上?/span>,点击调用,可以看到用XML格式q回?/span>Web Servicel果(i?/span>j相加的结?/span>)下图


到这?/span>,我们会发?/span>,其实webserviceq不是那么的秘,它也不过只是个接?/span>,Ҏ们而言,侧重点就是是接口函数的编?/span>.

2.3、用ASP.NET调用Web Service
首先Q打开
VS2005,打开文g-新徏-|站Q选择“ASP.NET|站?/span>


选好存储位置Q语a后点ȝ定,q入默认面。然后先dWeb引用Q把WebService引到当前的工E里面。方法是Q在资源理器中点击右键Q选择dWeb 引用Q调出对话框Q?br>

?/span>URL中填入,前面写好?/span>WebServiceq行后浏览器上面昄的地址Q点?#8220;前往”按钮Q如上图Q就会显C出所引用?/span>WebService中可以调用的ҎQ然后点?#8220;d引用”Q就?/span>webservice引用C当前的工E里?/span> Q如下图Q解x案中会出现引q来?/span>WebService文g


我们在这q习调?/span>webservice的四个方法,做一个简单的调用的例子,先在|站的前台添加几个控Ӟ代码如下Q?/span>

 1 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml" >
 5 <head runat="server">
 6     <title>Webservice调用实例</title>
 7 </head>
 8 <body>
 9     <form id="form1" runat="server">
10         <div>
11             <asp:TextBox ID="Num1" runat="server"></asp:TextBox>
12             <select id="selectOper" runat = "server">
13                 <option>+</option>
14                 <option>-</option>
15                 <option>*</option>
16                 <option>/</option>
17             </select>
18             <asp:TextBox ID="Num2" runat="server"></asp:TextBox>
19             <span id = E runat = "server"></span>
20             <asp:TextBox ID="Result" runat="server"></asp:TextBox>
21         </div>
22 </form>
23 </body>
24 </html>
25 

 

然后在后台写调用的代码,调用之前和用其它的对象一P要先实例化,实例化的Ҏ?/span>localhost.Service a = new localhost.Service();然后可以通过a来访?/span>WebService里面提供的方法了。在q个例子里面Q动态的创徏了一?/span>button控g来触?/span>WebService的调用,后台代码如下Q?br>
 1 using System;
 2 using System.Data;
 3 using System.Configuration;
 4 using System.Web;
 5 using System.Web.Security;
 6 using System.Web.UI;
 7 using System.Web.UI.WebControls;
 8 using System.Web.UI.WebControls.WebParts;
 9 using System.Web.UI.HtmlControls;
10 public partial class _Default : System.Web.UI.Page 
11 {
12     protected void Page_Load(object sender, EventArgs e)
13     {
14         //在页面加载的时候动态创Z个按钮,在它的事仉调用Webservice
15         Button btn = new Button();
16         btn.Width = 20;
17         btn.Text = " = ";
18         btn.Click +=new EventHandler(btn_Click);
19         E.Controls.Add(btn);
20     }
21     /// <summary>
22     /// 定义动态创建Button的Click事gQ在q个事g中调用Webservice
23     /// </summary>
24     /// <param name="sender"></param>
25     /// <param name="e"></param>
26     void btn_Click(object sender, EventArgs e)
27     {
28         if (Num1.Text != "" && Num2.Text != "")
29         {
30             //实例化引用的webservice对象
31             localhost.Service WebserviceInstance = new localhost.Service();
32             int Oper = selectOper.SelectedIndex;
33             switch( Oper)
34             {
35                 //通过实例化的webservice对象来调用Webservice暴露的方?/span>
36                 case 0:
37                     Result.Text = WebserviceInstance.addition(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
38                     break;
39                 case 1:
40                     Result.Text = WebserviceInstance.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
41                     break;
42                 case 2:
43                     Result.Text = WebserviceInstance.multiplication(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
44                     break;
45                 case 3:
46                     Result.Text = WebserviceInstance.division(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
47                     break;
48             }
49         }
50     }
51 }
52 
q行后可以看到效果,如下图所C,在前面两?/span>Textbox里面输入两个操作敎ͼ在中间的下拉列表中选择操作W,然后点击“=”P计的l果输出到第三个Textbox里面?br>
而整个计ƈ不是在本地进行的Q是?/span>Web服务端进行计的然后结果通过XMLq还l了调用方的Q所以,在运行该E序的时候,WebServiceE序q必d动,否则会报无法q接q程服务器的异常Q如下图Q?br>
到此一个一个简单的WebService的开发和调用已l完成了Q在实际应用中可以根据自q需要,写一些功能强大的Q复杂的WebServiceQ不多么复杂,整个程都是q样的?/span>

meglory 2011-03-16 17:31 发表评论
]]>
㽶þavһ| һƷþð͹| ŷþۺ㽶| ޾Ʒþþþȥq| 97þۺɫdžѿ| ɫݺȷӰþ| ˾þô߽AVۺӰԺ | þþƷ| ŷ޷avþò| ɫþˬˬƬaV| ŷ޹Ʒþ| ާѡþþþƷ| ƷþþþþóAV| ۺպþóAV| 69Ʒþþþ9999| þ91ۺϹ91þþƷ| ȾþùþƷ| þþþĻƷ| þþƷav鶹ɫ | ŷþþþþ| ɫԭһþۺ| þ| Բľþþþþ| þþƷרѶ | 99Ʒþþþþþ| Ļ뾫ƷԴþ| ˶ݺɫۺϾþ| 91ɫۺϾþѷ| һaƬþëƬ| þþƷѹۿ| ¶ۺϼ¾þ| þ޹˾Ʒ| ۺϾþۺϼþ| Ʒþ㽶߿ۿ| ھƷþþӰԺ| ҹƵþþþһ| þù| Ʒٸavþ| þþþѿӰƬ| AVպAVþþ| 99þù뾫Ʒ|