无法将类型xx 隐式转换为xx

sunjian5188 2006-09-22 06:36:50
---WEB SERVER
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using BaseLibrary;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class EmployeeService : System.Web.Services.WebService
{

public CredentialSoapHeader credential=new CredentialSoapHeader ();
[WebMethod]
[SoapHeader("credential", Direction = SoapHeaderDirection.In)]
public string EmployeesSave(string strSQL)
{

EmployeeLibrary el = new EmployeeLibrary();

try
{
if (credential.Username == "12345" && credential.Password == "12345")

return el.EmployeeSave(strSQL);
else
return null ;
}
catch (SoapException Se)
{
string strError = Se.Message.ToString();
return null ;
}

}
public class CredentialSoapHeader : SoapHeaderApplication
{
private string m_username;
private string m_password;
public override string Username
{

get { return m_username; }

set { m_username = value; }

}

public override string Password
{
get { return m_password; }

set { m_password = value; }
}
}
}

*****************************
Client

using System;
using System.Collections.Generic;
using System.Text;
using WebServiceTest.EmployeeService;
using WebServiceTest.BaseInfo;

namespace WebServiceTest
{
class Controller:Credential
{
public override string Username
{
get
{
return "12345";
}
set
{
// throw new Exception("The method or operation is not implemented.");
}
}

public override string Password
{
get
{
return "12345";
}
set
{
// throw new Exception("The method or operation is not implemented.");
}
}
}
public class BB
{
Controller UICredential = new Controller();
public string BaseInfoSave(string strSQL)
{
WebServiceTest.BaseInfo.BaseInfo bi = new WebServiceTest.BaseInfo.BaseInfo();
try
{


bi.CredentialSoapHeaderValue = (WebServiceTest.BaseInfo.CredentialSoapHeader)UICredential;//这里出错
return bi.Save("sss");

}
catch (Exception ex)
{
return (ex.Message.ToString());
}
}
public string EmployeeServiceSave(string strSQL)
{

WebServiceTest.EmployeeService.EmployeeService es = new WebServiceTest.EmployeeService.EmployeeService();

try
{

es.CredentialSoapHeaderValue = (WebServiceTest.EmployeeService.CredentialSoapHeader)UICredential;//这里出错
return es.EmployeesSave("xxxxx");

}
catch (Exception ex)
{
return (ex.Message.ToString());
}

}
}
}

...全文
294 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunjian5188 2006-09-23
  • 打赏
  • 举报
回复
thanks i'm try
scow 2006-09-22
  • 打赏
  • 举报
回复
试试这样行否
scow 2006-09-22
  • 打赏
  • 举报
回复
public class AuthHeader : SoapHeader
{
public string username;
public string password;
}

public class Service : System.Web.Services.WebService
{
public AuthHeader aHeader;
[WebMethod(Description = ""), SoapHeader("aHeader")]
public string EmployeesSave(string strSQL)
{
if (aHeader == null)
return "Please supply the credential!";
if (!AuthenticateIdentity(aHeader))
return "Error!Can'nt pass the authentication.";
......
}

private bool AuthenticateIdentity(AuthHeader header)
{
if (header == null)
return false;
if (header.username == "" &&
header.password == "")
{
return true;
}
else return false;
}
}

调用
Service s = new Service();
AuthHeader authenticate = new AuthHeader();
authenticate.username = "";
authenticate.password = "";
s.AuthHeaderValue = authenticate;
s.EmployeesSave("");

""的地方填入适当字符串
sunjian5188 2006-09-22
  • 打赏
  • 举报
回复
错误信息如下
无法将类型“WebServiceTest.Controller”转换为“WebServiceTest.BaseInfo.CredentialSoapHeader” C:\BaseWebServer\BaseWebServer (2)\WebServiceTest\Controller.cs 48 48 WebServiceTest
我这个程序的意图是在WEB SERVICE 做认证由客户端传过去用户名和密码。但就在给SOAP头类付值时说无法转换,那个大哥知道怎么做,是我这个不能实现还是我没有写对
thanks a lot

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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