登 录
调用你的Web Service的时候需要有身份才能去调用,这里我拟定用户名和密码都是admin
using ...System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Text.RegularExpressions; using Moc.Utility; using STS.DataUtility; namespace Moc.WebService ...{ [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class MocService : System.Web.Services.WebService ...{ private const string PRSRegion = "PRS"; private const string PRNRegion = "PRN"; private const string PRERegion = "PRE"; public CredentialSoapHeader myHeader = new CredentialSoapHeader(); public MocService() ...{ //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); MocConfiguration.OnApplicationStart(Server.MapPath(Context.Request.ApplicationPath)); } [WebMethod] public string HelloWorld() ...{ return "Hello World"; } /**//// <summary> /// MocExport /// </summary> [SoapHeader("myHeader")] [WebMethod(Description = "加入了身份验证的web服务", EnableSession = true)] public bool MocExport(string booking_No, string loginId) ...{ String msg = string.Empty; bool isFlag = false; //验证是否有权访问 if (!myHeader.IsValid(out msg)) ...{ MocLogger.Error(msg); return false; } STS.Communication.Branches branches = new STS.Communication.Branches(); string region = branches.GetRegionByUser(loginId); string Filepath = AppDomain.CurrentDomain.BaseDirectory; if (region.ToUpper() == PRSRegion.ToUpper()) ...{ Filepath = Filepath + @"Templates/PRS_Booking.xml"; } else if (region.ToUpper() == PRNRegion.ToUpper()) ...{ Filepath = Filepath + @"Templates/PRN_Booking.xml"; } else ...{ Filepath = Filepath + @"Templates/PRE_Booking.xml"; } MocExport mocwriter = new MocExport(Filepath); if (mocwriter.LoadTemplate()) ...{ mocwriter.Params.Add("@Booking_No", booking_No); mocwriter.Params.Add("@LoginId", loginId); //报文生成文件名称 string ExportName = mocwriter.GetExportName(loginId); string ExportFilePath = mocwriter.GetExportFilePath() + ExportName; if (mocwriter.SaveMocFile(MocConfiguration.ExportPath, ExportName)) ...{ TransactionManager transactionManager = new TransactionManager(); transactionManager.BeginTransaction(); try ...{ string report_no = UID.getUID().ToString(); DatabaseManager.AddBookingReport(loginId, ExportName, ExportFilePath, booking_No, report_no, MocConfiguration.ExportPath, transactionManager); DatabaseManager.AddBookingReportRelation(booking_No, report_no, transactionManager); DatabaseManager.UpdateCarrierBooking(booking_No, report_no, transactionManager); transactionManager.Commit(); MocLogger.Trace("File " + ExportName + " Export successful!"); isFlag = true; } catch (Exception ex) ...{ transactionManager.Rollback(); MocLogger.Error(ex.Message); return false; } finally ...{ mocwriter.Dispose(); }//try } } return isFlag; }//WebMethod }//class }
身份验证类CredentialSoapHeader
using ...System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public class CredentialSoapHeader : System.Web.Services.Protocols.SoapHeader ...{ private string _UserID = string.Empty; private string _PassWord = string.Empty; public string UserID ...{ get ...{ return _UserID; } set ...{ _UserID = value; } } public string PassWord ...{ get ...{ return _PassWord; } set ...{ _PassWord = value; } } public void Initial(string nUserID, string nPassWord) ...{ UserID = nUserID; PassWord = nPassWord; } public bool IsValid(string nUserID, string nPassWord, out string nMsg) ...{ nMsg = ""; try ...{ //判断用户名密码是否正确 if (nUserID == "admin" && nPassWord == "admin") ...{ return true; } else ...{ nMsg = "对不起,你无权调用此Web服务,可能有如下原因:/n 1.您的帐号被管理员禁用。/n 2.您的帐号密码不正确"; return false; } } catch ...{ nMsg = "对不起,你无权调用此Web服务,可能有如下原因:/n 1.您的帐号被管理员禁用。/n 2.您的帐号密码不正确"; return false; } } /**//// <summary> /// 用户名密码是否正确 /// </summary> /// <returns>用户名密码是否正确</returns> public bool IsValid(out string nMsg) ...{ return IsValid(_UserID, _PassWord, out nMsg); } }
抱歉!评论已关闭.