:: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2012年8月4日

使用2008版本时需要注意的问题
1、需要在类库中添加,如有PL层和BLL层,在BLL层添加应用。
2、添加引用时,在类库上点击右键,添加服务引用(图一),点击高级(图二),点击添加Web引用(图三),

图一


图 二


图三
填写服务的发布地址(图四),点击前往,若出现函数名称,即说明该服务可用,然后修改web引用名为你想要的名称,点击添加引用即可 

图四
3、该类库中即出现如图五所示的文件夹

图五  
图中所示文件中的类即可实例化为代理类,进行本地使用(这个SmsWebservice与图四中不一致是因为1-4是我后来弄的,没有改名。其实四五中的名字应该是一致的)

posted @ 2012-08-04 17:38 托雷宽 阅读(330) | 评论 (0)编辑 收藏

2012年2月4日

当FCK使用ie9上传的时候,弹出层时不能显示内容

原因是 IE 9 不支持var $=document.getElementById;这样的写法了。
解决方法可以这么来做:

打开这个文件, fckeditor/editor/js/fckeditorcode_ie.js ,找到第 38行的这个方法:

FCKTools.RegisterDollarFunction
将原来的
FCKTools.RegisterDollarFunction=function(A){A.$=A.document.getElementById;};
修改方法为:
FCKTools.RegisterDollarFunction=function(A){A.$=function(v){return A.document.getElementById(v);}};

posted @ 2012-02-04 13:51 托雷宽 阅读(473) | 评论 (0)编辑 收藏

2012年1月9日

使用母版页可以用来统一命名,但是如果需要按照内容页内容动态命名,可以使用如下方法:
1:在母版页的.cs文件中新建一public函数
 eg.
    public void SetName(string name)
    {
        Page.Header.Title = name;
    }

2:在内容页aspx文件中,在引用母版页语句后添加如下语句
<%@ Page Language="C#" MasterPageFile="~/Detail.master" AutoEventWireup="true" CodeFile="IntegralDetails.aspx.cs" Inherits="IntegralDetails"  %>
<%@ MasterType VirtualPath="~/Detail.master" %>

3:在内容页.cs文件中使用如下语句对页面title进行赋值
(this.Master).SetName("动态改变的title");

4:如果在内容页的aspx文件中表明本页title,不进行动态赋值,也是可以的

posted @ 2012-01-09 21:20 托雷宽 阅读(345) | 评论 (0)编辑 收藏

2011年12月5日

ASP.NET 的安全认证,共有“Windows”“Form”“Passport”“None”四种验证模式。
一.部署运用Form认证
1:新建一个测试项目(暂且为“FormTest”吧),包含三张页面(Default.aspx、Login.aspx、UserInfo.aspx)
2:修改web.config
   1).认证字段
<authentication mode="Forms">
   <forms loginUrl="Login.aspx" name=".ASPXAUTH">
   </forms>
</authentication>
   2).权限字段
<authorization>
   <deny users="?">
   </deny>
</
authorization>
写在<system.web>节下,如果想写在<configuration>节下方便管理需要如下格式
<location path="(需要访问控制的文件夹或页面文件)">
   <system.web>    
      <authorization>
         <deny users="?">
         </deny>
      </authorization>
   </system.web>
</location>
3.编写登陆和退出的.CS代码
1).指验证后返回请求页面
   private void Btn_Login_Click(object sender, System.EventArgs e)
   {
      if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456")
      {
            System.Web.Security.FormsAuthentication.RedirectFromLoginPage(this.Txt_UserName.Text,false);
      }
   } 
2).
通过验证后就直接发放 Cookie ,跳转页面将由程序员自行指定,此方法多用于 Default.aspx 使用框架结构的系统
   private void Btn_Login_Click(object sender, System.EventArgs e)
   {
      if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456")
      {
            System.Web.Security.FormsAuthentication.SetAuthCookie(this.Txt_UserName.Text,false);
            Response.Redirect("Default.aspx");
      }
   }
3).使用用户凭证
 protected void Logon_Click(object sender, EventArgs e)
    {
        if ((UserEmail.Text == "admin" && UserPass.Text == "123123") ||
            (UserEmail.Text == "user" && UserPass.Text == "123123")) //允许通过验证的用户,这部分可以使用数据库用户验证替代
        {
            //初始化一个用户凭证的实例
            FormsAuthenticationTicket myTicket;

            //根据不同的用户名分配不同的role(这部分可以通过数据库role读取来替代)
            if (UserEmail.Text == "admin")
                myTicket = new FormsAuthenticationTicket(1, UserEmail.Text, DateTime.Now, DateTime.Now.AddMinutes(60),false, "admin");
            else
                myTicket = new FormsAuthenticationTicket(1, UserEmail.Text, DateTime.Now, DateTime.Now.AddMinutes(60), false, "user");

            string encryptedTicket = FormsAuthentication.Encrypt(myTicket); //加密用户凭证

            //把用户凭证存入Cookie ,FormsAuthentication.FormsCookieName参数位于config文件中Form认证的name属性
            HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);

            //添加Cookie
            Response.Cookies.Add(authCookie);

            //跳转默认重定向的默认 URL具体见Web.Config的配置
            Response.Redirect(FormsAuthentication.GetRedirectUrl(UserEmail.Text, Persist.Checked));

        }
        else
        {
            Msg.Text = "用户名密码出错,请重试";
        }

    }
  使用:
 Welcome.InnerHtml = "Hello, " + Server.HtmlEncode(User.Identity.Name); //输出用户名

        FormsIdentity id = (FormsIdentity)User.Identity;  //获取用户标识
        FormsAuthenticationTicket ticket = id.Ticket;
//显示用户凭证中的相关属性
        cookiePath.Text = ticket.CookiePath;
        expireDate.Text = ticket.Expiration.ToString();
        expired.Text = ticket.Expired.ToString();
        isPersistent.Text = ticket.IsPersistent.ToString();
        issueDate.Text = ticket.IssueDate.ToString();
        name.Text = ticket.Name;
        userData.Text = ticket.UserData;
        version.Text = ticket.Version.ToString();
4).退出
   private void Btn_LogOut_Click(object sender, System.EventArgs e)
   {
      System.Web.Security.FormsAuthentication.SignOut();
   }
4.如何判断用户是否已经登陆及获取用户信息
   if(User.Identity.IsAuthenticated)
   {
      //你已通过验证,
   }



posted @ 2011-12-05 21:44 托雷宽 阅读(328) | 评论 (0)编辑 收藏

2011年12月2日

在什么情况下应该使用adLockOptimistic,什么情况下应该使用adLockPessimistic....

在什么情况下应该使用adLockOptimistic,什么情况下应该使用adLockPessimistic,什么情况下用adOpenKeyset,什么情况下用adOpenDynamic- -
                                     

附带一个小资料:
-----------------------------------
常数 常数值 说明
-----------------------------------
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
adOpenKeyset 1 启动一个Keyset类型的游标。
adOpenDynamic 2 启动一个Dynamic类型的游标。
adOpenStatic 3 启动一个Static类型的游标。
-----------------------------------
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。

---------------------------------------------
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
---------------------------------------------
AbsolutePage 不支持 不支持 可读写 可读写
AbsolutePosition 不支持 不支持 可读写 可读写
ActiveConnection 可读写 可读写 可读写 可读写
BOF 只读 只读 只读 只读
Bookmark 不支持 不支持 可读写 可读写
CacheSize 可读写 可读写 可读写 可读写
CursorLocation 可读写 可读写 可读写 可读写
CursorType 可读写 可读写 可读写 可读写
EditMode 只读 只读 只读 只读
EOF 只读 只读 只读 只读
Filter 可读写 可读写 可读写 可读写
LockType 可读写 可读写 可读写 可读写
MarshalOptions 可读写 可读写 可读写 可读写
MaxRecords 可读写 可读写 可读写 可读写
PageCount 不支持 不支持 只读 只读
PageSize 可读写 可读写 可读写 可读写
RecordCount 不支持 不支持 只读 只读
Source 可读写 可读写 可读写 可读写
State 只读 只读 只读 只读
Status 只读 只读 只读 只读
AddNew 支持 支持 支持 支持
CancelBatch 支持 支持 支持 支持
CancelUpdate 支持 支持 支持 支持
Clone 不支持 不支持
Close 支持 支持 支持 支持
Delete 支持 支持 支持 支持
GetRows 支持 支持 支持 支持
Move 不支持 支持 支持 支持
MoveFirst 支持 支持 支持 支持
MoveLast 不支持 支持 支持 支持
MoveNext 支持 支持 支持 支持
MovePrevious 不支持 支持 支持 支持
NextRecordset 支持 支持 支持 支持
Open 支持 支持 支持 支持
Requery 支持 支持 支持 支持
Resync 不支持 不支持 支持 支持
Supports 支持 支持 支持 支持
Update 支持 支持 支持 支持
UpdateBatch 支持 支持 支持 支持
----------------------------------------
其中NextRecordset方法并不适用于Microsoft Access数据库。

LockType
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以 Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、 adLockOptimistic及adLockBatchOptimistic等,分述如下:

-----------------------------------
常数 常数值 说明
-----------------------------------
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、删、改的操作。

=====定义数据库连接的一些常量
<%
Const adOpenForwardOnly = 0 '游标只向前浏览记录,不支持分页、Recordset、BookMark
Const adOpenKeyset = 1 '键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
Const adOpenDynamic = 2 '动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览(ACCESS不支持)。
Const adOpenStatic = 3 '静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动

Const adLockReadOnly = 1 '锁定类型,默认的,只读,不能作任何修改
Const adLockPessimistic = 2 '当编辑时立即锁定记录,最安全的方式
Const adLockOptimistic = 3 '只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等
Const adLockBatchOptimistic = 4 '当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的

Const adCmdText = &H0001
Const adCmdTable = &H0002
%>

---------------------------------------------------------------

ADO Recordset的CursorLocation = AdUseClient时,只有AdOpenStatic/AdOpenForwardOnly
的CursorType会有作用,其他的二者和AdOpenStatic有相同的效果,即无论如何设,CursorType都是adOpenStatic。

如果是AdUseServer,在SQL Server中上述的四种CursorType都可以用,但是RecordSet中的Resync方法只有
在adOpenKeyset的CursorType才能用,AdOpenStatic不能使用。

posted @ 2011-12-02 20:32 托雷宽 阅读(691) | 评论 (1)编辑 收藏

1.应当具备的基础知识

在继续学习之前,需要对下面的知识有基本的了解:

  • HTML
  • XML

2.什么是Web Services?

  • Web Services 是应用程序组件
  • Web Services 使用开放协议进行通信
  • Web Services 是独立的(self-contained)并可自我描述
  • Web Services 可通过使用UDDI来发现
  • Web Services 可被其他应用程序使用
  • XML 是 Web Services 的基础

3.它如何工作?

   基础的 Web Services 平台是 XML + HTTP。

   HTTP 协议是最常用的因特网协议。

   XML 提供了一种可用于不同的平台和编程语言之间的语言。

   Web services 平台的元素:

  • SOAP (简易对象访问协议)
  • UDDI (通用描述、发现及整合)
  • WSDL (Web services 描述语言)

 

4.Web services 的未来

   请不要过早地期待太多!

   Web services 平台是简单的可共同操作的消息收发框架。它仍然缺少许多诸如安全和路由等重要的特性。但是,一旦 SOAP 变得更加高级,这些事项就会得到解决。

   Web services 有望使应用程序更加容易通信。

5.最重要的事情是协同工作

   由于所有主要的平台均可通过 Web 浏览器来访问 Web,不同的平台可以借此进行交互。为了让这些平台协同工作,Web 应用程序被开发了出来。

   Web 应用程序是运行在 Web 上的简易应用程序。它们围绕 Web 浏览器标准被进行构建,几乎可被任何平台之上的任何浏览器来使用。

  

   通过使用 Web services,您的应用程序可向全世界发布功能或消息。

   Web services 使用 XML 来编解码数据,并使用 SOAP 借由开放的协议来传输数据。

   通过 Web services,您的会计部门的 Win 2k 服务器可与 IT 供应商的 UNIX 服务器进行连接。

6.Web services 有两种类型的应用

   可重复使用的应用程序组件

   有一些功能是不同的应用程序常常会用到的。那么为什么要周而复始地开发它们呢?

   Web services 可以把应用程序组件作为服务来提供,比如汇率转换、天气预报或者甚至是语言翻译等等。

   比较理想的情况是,每种应用程序组件只有一个最优秀的版本,这样任何人都可以在其应用程序中使用它。

   连接现有的软件

   通过为不同的应用程序提供一种链接其数据的途径,Web services有助于解决协同工作的问题。

   通过使用 Web services,您可以在不同的应用程序与平台之间来交换数据。


 

posted @ 2011-12-02 20:31 托雷宽 阅读(240) | 评论 (0)编辑 收藏

那谁的技术博客

感兴趣领域:高性能服务器编程,存储,算法,Linux内核
http://www.cppblog.com/converse/

posted @ 2011-12-02 20:29 托雷宽 阅读(235) | 评论 (0)编辑 收藏

2011年10月27日

WCF挂载到IIS上,若WCF中数据库访问为windows身份验证,需要
1:启用目录浏览
2:选择应用程序池.NET版本4.0
3:更改应用程序池中.NET4.0的标识,将本机可访问数据库的用户名、密码加上

posted @ 2011-10-27 22:00 托雷宽 阅读(220) | 评论 (0)编辑 收藏

2011年10月17日

Web Services 平台元素

Web Services 拥有三种基本的元素。

它们是:SOAP、WSDL 以及 UDDI。

1.什么是 SOAP?

基本的 Web services 平台是 XML + HTTP。

  • SOAP 指简易对象访问协议
  • SOAP 是一种通信协议
  • SOAP 用于应用程序之间的通信
  • SOAP 是一种用于发送消息的格式
  • SOAP 被设计用来通过因特网进行通信
  • SOAP 独立于平台
  • SOAP 独立于语言
  • SOAP 基于 XML
  • SOAP 很简单并可扩展
  • SOAP 允许您绕过防火墙
  • SOAP 将作为 W3C 标准来发展

SOAP 教程

2.什么是 WSDL?

WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。

  • WSDL 指网络服务描述语言
  • WSDL 使用 XML 编写
  • WSDL 是一种 XML 文档
  • WSDL 用于描述网络服务
  • WSDL 也可用于定位网络服务
  • WSDL 还不是 W3C 标准

WSDL 教程

3.什么是UDDI?

UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。

  • UDDI 指通用的描述、发现以及整合(Universal Description, Discovery and Integration)。
  • UDDI 是一种用于存储有关 web services 的信息的目录。
  • UDDI 是一种由 WSDL 描述的网络服务接口目录。
  • UDDI 经由 SOAP 进行通迅。
  • UDDI 被构建于 Microsoft .NET 平台之中。

posted @ 2011-10-17 17:15 托雷宽 阅读(319) | 评论 (0)编辑 收藏

2011年8月21日

     摘要: 一:将一个用户添加到sudoers中1:使用root账号,使用visudo命令,键入/root找到root账号的那一行形如root    ALL=(ALL)       ALL,将你想要的用户名如wizard按root的那种格式在下面写上wizard ALL=(ALL) ALL ,然后:wq保存即可解释:第一...  阅读全文

posted @ 2011-08-21 11:05 托雷宽 阅读(418) | 评论 (0)编辑 收藏