[
Previous Post in Series - Tool developer notes part III]
Tip #1 - Initially I used to read IP address from App.config File for my C# Application. Based on feedback I moved the URL assigment in implementation. Only IP Address and Port would be read from App.config
While trying to compile below is error.
Error - C# + System.UriFormatException: Invalid URI: A port was expected because of there is a colon (':') present but the port could not be parsed.
Below
link was useful for the answer. Let's try out that answer
Step 1 - A simple Windows Forms App
Under App.Config App setting add following keys
<!--IP Address-->
<add key="IPAddress" value="117.00.162.110"/>
<!--Port-->
<add key="Port" value="1433"/>
Step 2 - Add Windows Configuration Reference and System.Web Reference
Step 3 - For the button click add below code in the method
string IpAddress = ConfigurationManager.AppSettings["IpAddress"];
string Port = ConfigurationManager.AppSettings["Port"];
string TestUrl = string.Format(@"http://{0}:{1}/test/services/testnode/", HttpUtility.UrlEncode(IpAddress),
HttpUtility.UrlEncode(Port));
Uri U = new Uri(TestUrl, UriKind.Absolute);
MessageBox.Show(U.ToString());
Using HttpUtility and Uri for setting up URL fixed the issue. If the URL is relative you need to use relative option while setting up new
uri (uniform resource identifier). Also note there is a double '//' after the http. This is also very important.
Tip #2 - Log4Net logging had duplicate entries created in logs. This was due to configuration setting in app.config file. Stackoverflow
answer was useful to correct duplicate logging issue. Lets try a sample code for Log4Net logging. Earlier example please check in
link
Modified App.Config File
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionname="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<appSettingsfile="" >
<clear/>
<addkey="log4net.Internal.Debug" value="false"/>
</appSettings>
<!-- This section contains the log4net configuration settings -->
<log4netdebug="true">
<appendername="LogFileAppender" type="log4net.Appender.FileAppender">
<layout type="log4net.Layout.XMLLayout" /> -->
<param name="File" value="Log4NetExample.log"/>
<param name="AppendToFile" value="false" />
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="[START LOG] %newline" />
<footer type="log4net.Util.PatternString" value="[END LOG] %newline" />
<conversionPattern value="%d [%t] %-5p - %m%n"/>
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="INFO" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</root>
<!-- Specify the level for some specific categories -->
<loggername="log4NetExample" additivity="false">
<!-- <appender-ref ref="B" /> -->
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
</configuration>
This config changes to previous example fixed the duplicate logging issue. I still need to explore all the Log4Net settings. Hoping to try them out in next set of posts.
Tip #3 - This is for error -
"The AXIS engine could not find a target service to invoke! targetService is ABC/". When I was trying to invoke a service through proxy code i received this error. The reason is there was a front slash '/' which need to be removed to fix this issue. There were so many answers provided for this error. Hint to remove slash was useful from
answer
Tip #4 -
Read Text from a File and Encode it in UTF8 format
Tip #5 -
Reading a File till end
Tip #6 -
Why do I get the error "Object reference not set to an instance of an object"?
Happy Learning!!!