C# 调用web Service时 需要Basic身份认证

micro518 2015-01-08 03:51:00
现在有一个局域网的WebService, 在IE中打开时需要用户名和密码,输入后可以看到XML。我把WebService以添加WebReference的方式添加到Windows Service项目中,同样需要用户名和密码,输入后可正常引用。windows服务安装后不能启动,原因估计为windows服务不能引用未经验证的WebService,问题我有用户名和密码怎么传递给服务器,验证方式Basic
...全文
1833 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyuehua1314 2016-05-23
  • 打赏
  • 举报
回复
的说法是否
  • 打赏
  • 举报
回复
引用 2 楼 micro518 的回复:
[quote=引用 1 楼 jenkin1016 的回复:]
谢谢您的回复,但是答非所问,我问的是:程序运行时怎么把我的用户名和密码传递给服务器,验证方式Basic ,服务时现有的,不可改变的[/quote] 那个代码有一定关系啊。它有一句代码
this.VerifyCredential(this) ;
从抠字眼的角度时可以靠上边儿的。 关键是不知道你的 webservice 在哪里设置了验证。
  • 打赏
  • 举报
回复
引用 楼主 micro518 的回复:
现在有一个局域网的WebService, 在IE中打开时需要用户名和密码,输入后可以看到XML。我把WebService以添加WebReference的方式添加到Windows Service项目中,同样需要用户名和密码,输入后可正常引用。windows服务安装后不能启动,原因估计为windows服务不能引用未经验证的WebService,问题我有用户名和密码怎么传递给服务器,验证方式Basic
你在 windows 服务程序中引用 webservice 客户端,有啥意义啊?! 你用来发布 webservice 的那个web 服务器网站,应该允许匿名访问。如果是 IIS发布的,看看你的网站是否设置为匿名访问!
SPFarmer 2015-01-08
  • 打赏
  • 举报
回复
myWebService.Credentials = new System.Net.NetworkCredential(userName, password, domain); 试试这个。在调用web service之前,把用户名密码加进去。
micro518 2015-01-08
  • 打赏
  • 举报
回复
引用 1 楼 jenkin1016 的回复:
谢谢您的回复,但是答非所问,我问的是:程序运行时怎么把我的用户名和密码传递给服务器,验证方式Basic ,服务时现有的,不可改变的
回.到.未来 2015-01-08
  • 打赏
  • 举报
回复
1,使用SoapHeader传递和验证用户 Web Service端的代码: 1.1先创建一个继承自System.Web.Services.Protocols.SoapHeader CredentialSoapHeader类: public class CredentialSoapHeader : SoapHeader { private string _userName ; private string _userPassword ; public string UserName { get { return _userName ; } set { _userName = value ; } } public string UserPassword { get { return _userPassword ; } set { _userPassword = value ; } } } 1.2创建对外发布的Web Service方法 public class MyService : System.Web.Services.WebService { private CredentialSoapHeader m_credentials ; public CredentialSoapHeader Credentails { get { return m_credentials ; } set { m_credentials = value ; } } //对外发布的服务 [WebMethod(BufferResponse = true,Description = "欢迎 方法" ,CacheDuration = 0,EnableSession=false, MessageName = "HelloFriend",TransactionOption = TransactionOption.Required)] [SoapHeader("Credentails")] public string Welcome(string userName) { this.VerifyCredential(this) ; return "Welcome " + userName ; } //验证是否合法 private void VerifyCredential(MyService s) { if ( s.Credentails == null || s.Credentails.UserName == null || s.Credentails.UserPassword == null ) { throw new SoapException("验证失 败",SoapException.ClientFaultCode,"Security") ; } //在这里可以进一步进行自定义的用户验证 } } 创建使用MyService的客户端(本处使用WinForm来做实例) 先把MyService的引用添加进来 public class ClientForm : System.Windows.Forms.Form { public ClientForm() { MyService s = new MyService() ; this.InitWebServiceProxy(s) ; string temp = s.Welcome("test") ; MessageBox.Show(temp) ; } private void InitWebServiceProxy(MyService s) { CredentialSoapHeader soapHeader = new CredentialSoapHeader () ; soapHeader.UserName = "test" ; soapHeader.UserPassword = "test" ; s.CredentialSoapHeaderValue = soapHeader ; string urlSettings = null ; //这里可以从配置文件中获取 if (urlSettings != null ) { s.Url = urlSettings ; } s.Credentials = (System.Net.NetworkCredential) CredentialCache.DefaultCredentials ; } }
编号 标题 内容 一 NET开发基础 .NET Framework概述 VS2008开发环境 C#语言及编码规范 面向对象开发初步 接口和类的设计 SQL语句,存储过程 二 .NET框架&C#编程 面向对象的基本知识体系 .NET中的面向对象设计与应用 C#与设计模式 泛型 C#中的新特性 程序集 .NET应用程序部署和版本控制 委托和事件 线程 反射 对象序列化 数据流和文件 Internet访问与网络编程 EventLog MSMQ Remoting 与COM的交互 Windows Service 三 ADO.NET 数据库连接与连接池控制 执行数据操作命令 DataReader DataSet ADO.NET中的数据更新 多活动结果集 批量复制 ADO.NET中的异步处理 事务处理机制 LINQ 案例分析:采用N层架构和分布式的大型图书系统 四 Web应用(ASP.NET&XML; WebService ASP.NET 页面控制机制及编译模型,页面周期,常用控件,自定义控件,用户控件   MasterPage,主题与皮肤,站点导航,数据源控件,数据绑定   AJAX,数据缓存,个性化用户配置,Web部件,成员资格与角色管理   自定义HttpHandler与HttpModule,综合站点设计,N层架构设计 XML   XMLDocument,XML Reader & Writer   XML XPATH,XML XSLT,XML Schema   XML & ADO.NET,XML & 配置文件   XML序列化 Web Service   WSDL,SOAP,UDDI,生成XML Web Service   Web Service中的异步调用,状态管理   事务处理,安全性,自定义身份验证 Visual Studio Team System 中的单元测试与Web测试 案例分析:基于.NET2.0的大型电子商务系统 五  Windows 应用(Windows Forms) 创建Windows应用程序 主要Windows控件与自定义控件 WinForm中的数据处理 多文档界面 打印功能 GDI+ WinForm中的异步编程 资源文件与国际化开发 部署方案(ClickOnce)

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧