关于Web服务和客户端程序解决方案
关于Web服务和客户端程序
大家好,我在Web Service中定义了两个方法,用来对SQL Server 2005数据库进行数据的操作。同时有一个客户端应用程序(Windows应用程序),添加了一个Web引用,引用该Web Service,在客户端实现对数据的查询、修改和删除操作。
在同一个机子上运行时,客户端是可以对数据库中的数据进行操作的。但是当我把Web Service运行在主机上,在另一台电脑上运行客户端程序时,会出现“主机积极拒绝”的错误,不能对主机上的数据库进行操作。
请问要怎么弄?
------解决方案--------------------
当你把服务部署到与你的开发环境不同的主机(域名和端口号不同)上去以后,你的客户端怎样知道去访问新的地址?你是怎样做的?
------解决方案--------------------
感觉sp1234说的很对,八成是引用写死了,楼主可能需要动态引用WebService
一、WebService
代码
二、Winform客户端
引用
添加引用System.Web.Services:右击引用--点添加引用-在.NET标签下找System.Web.Services-确定。
控件
WebService URL输入框txtWebserviceURL:用于输入WebService URL,就是能在浏览器打开的WebService URL
用户信息验证按钮btnUserCheck:点击执行用户验证
用户账号输入框txtUserName:用户账号输入
用户密码输入框txtPassword:用户密码输入
下一步操作按钮btnNextOperate:下一步操作按钮,默认Enabled属性为false
代码
大家好,我在Web Service中定义了两个方法,用来对SQL Server 2005数据库进行数据的操作。同时有一个客户端应用程序(Windows应用程序),添加了一个Web引用,引用该Web Service,在客户端实现对数据的查询、修改和删除操作。
在同一个机子上运行时,客户端是可以对数据库中的数据进行操作的。但是当我把Web Service运行在主机上,在另一台电脑上运行客户端程序时,会出现“主机积极拒绝”的错误,不能对主机上的数据库进行操作。
请问要怎么弄?
------解决方案--------------------
当你把服务部署到与你的开发环境不同的主机(域名和端口号不同)上去以后,你的客户端怎样知道去访问新的地址?你是怎样做的?
------解决方案--------------------
感觉sp1234说的很对,八成是引用写死了,楼主可能需要动态引用WebService
一、WebService
代码
[WebService(Namespace = "http://localhost/MyWebService")]//根据实际情况替换localhost[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyWebService : System.Web.Services.WebService
{
public ProfessionalWebService() { }
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod(Description = "用户验证")]
public string userValidate(string strUserName, string strPassword)
{
//使用strUserName、strPassword参数验证
string strResult = userCheck(strUserName, strPassword);
return strResult;
}
[WebMethod(Description = "帐号验证:信息匹配返回账号密码正确;信息不匹配返回账号密码错误。")]
public static string userCheck(string strUserName, string strPassword)
{
//代码省略。。。
}
}
二、Winform客户端
引用
添加引用System.Web.Services:右击引用--点添加引用-在.NET标签下找System.Web.Services-确定。
控件
WebService URL输入框txtWebserviceURL:用于输入WebService URL,就是能在浏览器打开的WebService URL
用户信息验证按钮btnUserCheck:点击执行用户验证
用户账号输入框txtUserName:用户账号输入
用户密码输入框txtPassword:用户密码输入
下一步操作按钮btnNextOperate:下一步操作按钮,默认Enabled属性为false
代码
using System.Net;
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Web.Services;
using System.Web.Services.Description;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
private void btnUserCheck_Click(object sender, EventArgs e)
{
//通过Webservice进行用户信息验证。成功:打开写入窗口的选项可用;失败:打开写入窗口的选项不可用
try
{
// 1. 使用 WebClient 下载 WSDL 信息。
WebClient web = new WebClient();
Stream stream = web.OpenRead(txtWebserviceURL.Text + "?WSDL");//txtWebserviceURL中填写WebService URL
// 2. 创建和格式化 WSDL 文档。
ServiceDescription description = ServiceDescription.Read(stream);
// 3. 创建客户端代理代理类。
ServiceDescriptionImporter importer = new ServiceDescriptionImporter();