我试图将用c#语言编写的服务称为.net的WCF项目。 主机的IP将随时间变化。我需要调用服务而不在设计时向客户端添加服务引用,以便我可以在以后更改它而无需编译客户端应用程序。 我在代码项目中找到了this文章但是当我发布我的客户端时,我没有任何配置文件来更改其中的url。 任何人都可以帮我找到如何在运行时更改Web服务的URL而无需重新编译客户端应用程序 最好的问候
答案 0 :(得分:0)
正如Grant所说,只要服务合同没有改变,你就可以改变端点地址,而无需重新编译应用程序本身。
检查解决方案资源管理器中是否有名为App.config的文件。 (如果你正在制作某种网络应用程序,它可能被称为Web.config。)
答案 1 :(得分:0)
我找到了一种简单的方法来做我想做的事情。 我在互联网上找到很多寻址.config文件的页面,但我找不到该文件。 这就是我解决问题的方法:
visual studio中的项目解决方案中有一个.config文件。如果此文件中的地址正确,则发布的程序将不会查找任何其他文件(如.config文件)以获取服务的地址。所以我将项目解决方案中app.config文件中指定的地址更改为无意义的地址。 然后没有发布项目,我只按f6刷新项目的相关文件。 我移动到保存项目的路径。对我来说是:C:\ Users \ user \ Documents \ Visual Studio 2012 \ Projects \ my project 然后我移动到bin目录然后调试目录 在这里,我找到了我的解决方案的.exe文件和.config文件,这是我正在寻找的正确文件。 我将.exe和.config文件复制到另一个目录中。现在,当我运行.exe文件时,它将查看我在其旁边复制的.config文件。如果正确定义了.config文件中的Web服务的地址,那么我可以从该客户端访问Web服务中的方法。
我希望它也能帮助那些寻求从外部文件寻址Web服务的人,而无需重新编译解决方案。
答案 2 :(得分:0)
这是一份工作副本。对我来说它工作正常并返回List
private List<MyClass> GetAllSiteDetailsJSON(string language)
{
Uri address =
new Uri(@"http://weburlpath/MyService/MyService.svc/GetAllList/"
+ language);
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string jSon = reader.ReadToEnd();
reader.Close();
JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
List<MyClass> result = jsSerializer.Deserialize<List<MyClass>>(jSon);
return result;
}
}
这是班级
public class MyClass
{
public string ID { get; set; }
public string Name { get; set; }
public List<Location> Locations { get; set; }
}
public class Location
{
public string Region { get; set; }
public string Country { get; set; }
}