用VS2015 版本调用天气预报 getWeatherbyCityName 方法报错. getSupportProvince方法却能成功
//string[] item1 = weatherC.getSupportProvince();
//string[] items = weatherC.getWeatherbyCityName("温州");
报错
“/”应用程序中的服务器错误。服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ServiceModel.FaultException: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。源错误: 行 105:
行 106: public string[] getWeatherbyCityName(string theCityName) {
行 107: return base.Channel.getWeatherbyCityName(theCityName);
行 108: }
行 109: 源文件: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\c3d49eed\d9a3e5a0\App_WebReferences.xtj-j4ei.0.cs 行: 107 堆栈跟踪: [FaultException: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。]System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +153System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +336ServiceReference1.WeatherWebServiceSoap.getWeatherbyCityName(String theCityName) +0ServiceReference1.WeatherWebServiceSoapClient.getWeatherbyCityName(String theCityName) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\c3d49eed\d9a3e5a0\App_WebReferences.xtj-j4ei.0.cs:107_Default.Page_Load(Object sender, EventArgs e) in d:\Mwork\2016-11-04 Test\Default.aspx.cs:10System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51System.Web.UI.Control.OnLoad(EventArgs e) +95System.Web.UI.Control.LoadRecursive() +59System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.6.1055.0
解决方案:
//vs2015 把 [添加web引用] 的选项 放到 [添加服务引用]选项里面了
步骤
//[添加]-[服务引用]-[高级]-[添加Web 引用]-输入webservices地址[例如:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName]
报错
无法加载协定为“ServiceReference1.WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 无法加载协定为“ServiceReference1.WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。源错误: 行 61: public partial class WeatherWebServiceSoapClient : System.ServiceModel.ClientBase<ServiceReference1.WeatherWebServiceSoap>, ServiceReference1.WeatherWebServiceSoap {
行 62:
行 63: public WeatherWebServiceSoapClient() {
行 64: }
行 65: 源文件: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\c3d49eed\d9a3e5a0\App_WebReferences.xtj-j4ei.0.cs 行: 63 堆栈跟踪: [InvalidOperationException: 无法加载协定为“ServiceReference1.WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。]System.ServiceModel.Description.ConfigLoader.LookupChannel(ContextInformation configurationContext, String configurationName, ContractDescription contract, EndpointAddress address, Boolean wildcard, Boolean useChannelElementKind, ServiceEndpoint& serviceEndpoint) +463System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address) +89System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress) +129System.ServiceModel.ConfigurationEndpointTrait`1.CreateSimplexFactory() +12838651System.ServiceModel.ConfigurationEndpointTrait`1.CreateChannelFactory() +19System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait) +18System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef() +357System.ServiceModel.ClientBase`1..ctor() +295ServiceReference1.WeatherWebServiceSoapClient..ctor() in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\c3d49eed\d9a3e5a0\App_WebReferences.xtj-j4ei.0.cs:63_Default.Page_Load(Object sender, EventArgs e) in d:\Mwork\2016-11-04 Test\Default.aspx.cs:7System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51System.Web.UI.Control.OnLoad(EventArgs e) +95System.Web.UI.Control.LoadRecursive() +59System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678
解决方案:
添加服务引用后,如果“更新”服务引用,或“删除”该服务引用后再次加入后,在运行时会出现此错误。这是因为在“更新/删除”服务引用时,app.config文件并不会自动修改,在“更新”或再次“加入”后,会生成两个同样的“endpoint”,需要手工删除掉原有的才能正常运行。
源代码:http://download.csdn.net/detail/sat472291519/9672724
源代码步骤:http://download.csdn.net/download/sat472291519/9672753
参考文献:
[1]http://bbs.csdn.net/topics/390968500
[2]http://ask.csdn.net/questions/161302
[3]http://blog.csdn.net/ltylove2007/article/details/6128333