I've encountered a problem 2 days ago and till now I don't know how to handle it.
Well the problem is that I have 2 app.configs (one in a class library DAL, another one in Windows Forms UI), so in DAL I've added a Web Reference and changed it's property "URL Behaviour" to Dynamic. So in DAL app.config automatic were added following lines
[code]
[/code]
And automatic was generated a Reference.cs class which made a constructor and overloaded WS methods.
Now when I copy this setting section into UI app.config then it's supposed to be dynamic, this means that I can change the URL setting in UI app.config, and our proxy class (Reference.cs) will also be rebuild for inputted URL.
But it doesn't make this. When I change in UI app.config URL value it changes the ws.Url property to that value but the responce is null.
| public WSAgencesAccessor() |
| { |
| ws = new P5_PLA.DAL.WsPLA.WsPLA(); |
| // when we put here breakpoint we'll see what ws.Url is equal to value inputted in UI app.config |
| } |
| #endregion |
| #region Get |
| public AgencesDataSet.T_AgencesDataTable GetAgences() |
| { |
| string responce = ws.WsPLAGetAllAgences001(DataUtils.SessionId, Properties.Settings.Default.SRC, DataUtils.SessionIp); |
| // here responce is equal to null |
| AgencesDataSet ds = new AgencesDataSet(); |
| new DataUtils().ManageXMLResponceGet(responce, ds); |
| // after execution of ManageXMLResponceGet I receive a ArgumentNullException // because of the responce argument |
| return ds.T_Agences; |
| } |
After examining WS url I know that it works perfectly (tested them in WSDL from Eclipse). Now the Reference.cs looks like this
| /// |
| [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.1433")] |
| [System.Diagnostics.DebuggerStepThroughAttribute()] |
| [System.ComponentModel.DesignerCategoryAttribute("code")] |
| [System.Web.Services.WebServiceBindingAttribute(Name="WsPLAHttpBinding", Namespace="http://localhost:8080/WsPLA/services/WsPLA")] |
| public partial class WsPLA : System.Web.Services.Protocols.SoapHttpClientProtocol { |
| |
| private System.Threading.SendOrPostCallback WsPLAGetUsers001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLAGetAllProjets001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLAAjoutPlanif001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLADeletePlanif001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLAAjoutProjet001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLAGetProjetById001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLAGetPlanifs001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLAGetAllAgences001OperationCompleted; |
| |
| private System.Threading.SendOrPostCallback WsPLAGetAgenceById001OperationCompleted; |
| |
| private bool useDefaultCredentialsSetExplicitly; |
| |
| /// |
| public WsPLA() { |
| this.Url = global::P5_PLA.DAL.Properties.Settings.Default.P5_PLA_DAL_WsPLA_WsPLA; |
| if ((this.IsLocalFileSystemWebService(this.Url) == true)) { |
| this.UseDefaultCredentials = true; |
| this.useDefaultCredentialsSetExplicitly = false; |
| } |
| else { |
| this.useDefaultCredentialsSetExplicitly = true; |
| } |
| } |
| |
| public new string Url { |
| get { |
| return base.Url; |
| } |
| set { |
| if ((((this.IsLocalFileSystemWebService(base.Url) == true) |
| && (this.useDefaultCredentialsSetExplicitly == false)) |
| && (this.IsLocalFileSystemWebService(value) == false))) { |
| base.UseDefaultCredentials = false; |
| } |
| base.Url = value; |
| } |
| } |
| |
| public new bool UseDefaultCredentials { |
| get { |
| return base.UseDefaultCredentials; |
| } |
| set { |
| base.UseDefaultCredentials = value; |
| this.useDefaultCredentialsSetExplicitly = true; |
| } |
| } |
| |
| /// |
| public event WsPLAGetUsers001CompletedEventHandler WsPLAGetUsers001Completed; |
| |
| /// |
| public event WsPLAGetAllProjets001CompletedEventHandler WsPLAGetAllProjets001Completed; |
| |
| /// |
| public event WsPLAAjoutPlanif001CompletedEventHandler WsPLAAjoutPlanif001Completed; |
| |
| /// |
| public event WsPLADeletePlanif001CompletedEventHandler WsPLADeletePlanif001Completed; |
| |
| /// |
| public event WsPLAAjoutProjet001CompletedEventHandler WsPLAAjoutProjet001Completed; |
| |
| /// |
| public event WsPLAGetProjetById001CompletedEventHandler WsPLAGetProjetById001Completed; |
| |
| /// |
| public event WsPLAGetPlanifs001CompletedEventHandler WsPLAGetPlanifs001Completed; |
| |
| /// |
| public event WsPLAGetAllAgences001CompletedEventHandler WsPLAGetAllAgences001Completed; |
| |
| /// |
| public event WsPLAGetAgenceById001CompletedEventHandler WsPLAGetAgenceById001Completed; |
| |
| /// |
| [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="http://localhost:8080/WsPLA/services/WsPLA", ResponseNamespace="http://localhost:8080/WsPLA/services/WsPLA", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] |
| [return: System.Xml.Serialization.XmlElementAttribute("out", IsNullable=true)] |
| public string WsPLAGetUsers001([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string in0, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string in1, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string in2, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string in3) { |
| object[] results = this.Invoke("WsPLAGetUsers001", new object[] { |
| in0, |
| in1, |
| in2, |
| in3}); |
| return ((string)(results[0])); |
| } |
When I change the values of RequestNamespace, ResponceNamespace and Namespace to URL i need everything works fine. So the URL from UI app.config and from Reference.cs should be the same to work. Now how can I change this all thing to a really dynamic behaviour, just changing URL in app.config UI?
No comments:
Post a Comment