你的第一步是向自己证明这是可能的,然后调整你的项目。
你可以在
这里下载可运行的解决方案。
我刚刚按照步骤列举了我的操作,以产生你所需要的结果。
创建一个名为'ReferencedWebService'的Web应用程序项目(因此也是解决方案)
添加一个Web服务,只需保留默认名称和实现
添加一个名为'ReferencedWebserviceAPI'的类库
添加服务引用
>高级选项
>添加Web引用>此解决方案中的Web服务
>WebService1
>添加引用,名称保留为“localhost”
添加一个名为'ReferencedWebserviceClient'的控制台应用程序项目
对于ReferencedWebserviceClient:
添加引用
>项目
>ReferencedWebserviceAPI
添加引用
>.Net
>System.Web.Services
在Program.cs中替换Main:
static void Main(string[] args)
{
var svc = new ReferencedWebserviceAPI.localhost.WebService1();
var result = svc.HelloWorld();
Console.WriteLine(result);
Console.ReadLine();
}
将ReferencedWebserviceClient设置为启动项目并运行。
好的,这是最简单的情况。您将需要处理的一个问题是,默认的服务URL在.dll中硬编码,并且它被设置为您的开发计算机上的端口地址。
您将想要向客户端项目添加配置参数。最简单、最便携的方法是使用appSetting。
对于ReferencedWebserviceClient:
添加项
>应用程序配置文件
将App.Config的内容替换为以下内容,当然要用适当的值替换该值。
添加引用
>.Net
>System.Configuration
现在将Main替换为以下内容:
static void Main(string[] args)
{
var svc = new ReferencedWebserviceAPI.localhost.WebService1
{
Url = ConfigurationManager.AppSettings["serviceUrl"]
};
var result = svc.HelloWorld();
Console.WriteLine(result);
Console.ReadLine();
}
这是将服务嵌入可再分发的.dll文件中的基准。请尝试将此模型应用于您当前的项目,看看它对您有何作用。如果仍然存在问题,则您肯定有参考问题,并应从该角度开始查找。希望这可以帮助您。