<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ASP.NET Archives - Blog IT</title>
	<atom:link href="https://blogit.create.pt/category/dotnet/asp-net/feed/" rel="self" type="application/rss+xml" />
	<link>https://blogit.create.pt/category/dotnet/asp-net/</link>
	<description>Create IT blogger community</description>
	<lastBuildDate>Tue, 02 Apr 2024 16:05:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>Integration Tests in .NET WebApi</title>
		<link>https://blogit.create.pt/andresantos/2024/04/01/integration-tests-in-net-webapi/</link>
					<comments>https://blogit.create.pt/andresantos/2024/04/01/integration-tests-in-net-webapi/#respond</comments>
		
		<dc:creator><![CDATA[André Santos]]></dc:creator>
		<pubDate>Mon, 01 Apr 2024 12:47:41 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Automatic Testing]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[inmemorydatabase]]></category>
		<category><![CDATA[integrated]]></category>
		<category><![CDATA[Testing]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=13472</guid>

					<description><![CDATA[<p>In software development, testing is an essential aspect that ensures the stability and reliability of applications. Three primary types of tests are commonly used: unit tests, integration tests, and end-to-end tests. In this blog post, we will discuss these testing types in the context of a .NET WebAPI project and provide an example implementation of integration testing using an in-memory database.</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2024/04/01/integration-tests-in-net-webapi/">Integration Tests in .NET WebApi</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In software development, testing is an essential aspect that ensures the stability and reliability of applications. Three primary types of tests are commonly used: unit tests, integration tests, and end-to-end tests. In this blog post, we will discuss these testing types in the context of a .NET WebAPI project and provide an example implementation of integration testing using an in-memory database.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Unit Tests, Integration Tests, and End-to-End Tests: What&#8217;s the Difference?</h2>



<ul class="wp-block-list">
<li><strong>Unit tests</strong> focus on testing individual units or components of your application in isolation. This type of test verifies whether the unit/component works correctly and adheres to its business logic.</li>



<li><strong>Integration tests</strong> aim to test multiple units or components together, ensuring that they interact properly. Integration tests can uncover issues related to data flow, communication between components, and external dependencies like databases.</li>



<li><strong>End-to-end (E2E)</strong> tests simulate a complete user scenario by testing the entire application from start to finish. E2E tests can help identify issues related to multiple components, external APIs, and user interfaces.</li>
</ul>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h2 class="wp-block-heading">Example Implementation in .NET</h2>



<p>To perform integration tests, we will use an in-memory database and the <em>WebApplicationFactory </em>feature of ASP.NET Core. This approach allows us to test our WebAPI application with a real web server in memory, simulating how the components interact with each other when making requests.</p>



<p>First, let&#8217;s create an InMemoryDbAppFactory that sets up our in-memory web server and database:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: csharp; title: ; notranslate">
public class InMemoryDbAppFactory : WebApplicationFactory&lt;Program&gt;
{
    private readonly string _environment;

    public InMemoryDbAppFactory()
    {
        _environment = &quot;IntegrationTests&quot;;
    }

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        Environment.SetEnvironmentVariable(&quot;ASPNETCORE_ENVIRONMENT&quot;, _environment);
        builder.UseEnvironment(_environment);
        builder.UseSetting(&quot;https_port&quot;, &quot;8080&quot;);

        builder.ConfigureTestServices(services =&gt;
        {
            services.RemoveAll&lt;ITestRepository&gt;();
            services.TryAddTransient&lt;ITestRepository, TestRepositoryTest&gt;();

            // Anonymous authentication
            services
                .AddAuthentication(&quot;Test&quot;)
                .AddScheme&lt;AuthenticationSchemeOptions, TestAuthenticationHandler&gt;(&quot;Test&quot;, options =&gt; { });
        });
    }
}
</pre></div>


<p>In order to use an in-memory database, we will override the connection string injection in our <em>ServiceCollectionExtensions</em>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: csharp; title: ; notranslate">
public static partial class ServiceCollectionExtensions
{
    public static IServiceCollection AddDbContexts(
        this IServiceCollection services,
        IConfiguration configuration,
        IWebHostEnvironment environment
    )
    {
        if (environment.IsEnvironment(&quot;IntegrationTests&quot;))
        {
            var connDb = new SqliteConnection(&quot;DataSource=db;mode=memory;cache=shared&quot;);
            connDb.Open();
            services.AddDbContext&lt;dbContext&gt;(options =&gt; options.UseSqlite(connDb));
        }
        else
        {
            services.AddDbContext&lt;dbContext&gt;(
                options =&gt; options.UseSqlServer(configuration.GetConnectionString(&quot;ConnectionString&quot;)).UseExceptionProcessor(),
                ServiceLifetime.Scoped
            );
        }

        return services;
    }
}
</pre></div>


<p>Finally, this is how a test looks like:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: csharp; title: ; notranslate">
&#x5B;Collection(&quot;MemoryDbIntegrationTests&quot;)]
public class ApiTests : IClassFixture&lt;InMemoryDbAppFactory&gt;
{
    private readonly InMemoryDbAppFactory _factory;
    private readonly HttpClient _client;

    public ApiTests(InMemoryDbAppFactory factory)
    {
        _factory = factory;
        _client = factory.CreateClient();

        // Ensures a clean database before each test
        factory.ResetDb();
    }

    &#x5B;Fact]
    public async Task GetList_Should_Return_List()
    {
        // Arrange

        // Act
        var response = await _client.GetAsync(&quot;/api/list&quot;);
        var content = await response.Content.ReadFromJsonAsync&lt;IEnumerable&lt;Dto&gt;&gt;();

        // Assert
        response.EnsureSuccessStatusCode(); // Status Code 200-299
        content.Should().NotBeNull();
        content.Should().HaveCount(2);
    }
}

</pre></div></div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Using an in-memory database for integration tests has both advantages and disadvantages:</h2>



<h3 class="wp-block-heading">Advantages:</h3>



<ul class="wp-block-list">
<li><strong>Faster test execution</strong>: In-memory databases provide quicker test execution times since the data is stored in memory instead of on disk. This can significantly improve your overall testing performance and help you find issues faster.</li>



<li><strong>Easy to set up and tear down</strong>: In-memory databases are easy to create, modify, and delete without the need for external dependencies or configuration changes. This makes it easier to write, run, and maintain your tests.</li>



<li><strong>Consistent test data</strong>: In-memory databases allow you to create a known set of data for your tests, ensuring that each test starts with the same initial conditions. This can help reduce the likelihood of inconsistent test results and make it easier to identify issues related to data flow or dependencies between tests.</li>
</ul>



<h3 class="wp-block-heading">Disadvantages:</h3>



<ul class="wp-block-list">
<li><strong>Limited scalability</strong>: In-memory databases have limited capacity and may not be suitable for testing large datasets or complex scenarios that require high levels of concurrency.</li>



<li><strong>Lack of realism</strong>: In-memory databases may not accurately represent the behavior or performance of a production database, especially when dealing with complex queries or data modification operations. This can make it difficult to identify issues related to database schema, indexing, and query optimization.</li>



<li><strong>Limited support for advanced features</strong>: using SQLite as our in memory database we don&#8217;t have support for multiple schemas and some advanced query features.</li>



<li><strong>Seed data</strong>: the need to create seed data can be tedious and time consuming.</li>
</ul>



<p>When deciding whether to use an in-memory database, mock data, or a real web server in memory for your integration tests, consider the specific requirements of your project and weigh the advantages and disadvantages of each approach. In many cases, using a combination of testing types and approaches can help you ensure the stability, reliability, and performance of your .NET WebAPI application.</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2024/04/01/integration-tests-in-net-webapi/">Integration Tests in .NET WebApi</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/andresantos/2024/04/01/integration-tests-in-net-webapi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Redirecting 2 domains from http to https and non-www to www</title>
		<link>https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/</link>
					<comments>https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/#respond</comments>
		
		<dc:creator><![CDATA[André Santos]]></dc:creator>
		<pubDate>Tue, 30 Oct 2018 12:25:59 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[naked domain]]></category>
		<category><![CDATA[non-www]]></category>
		<category><![CDATA[redirection]]></category>
		<category><![CDATA[web.config]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=7670</guid>

					<description><![CDATA[<p>Recently I had to configure some redirections in a website that contains two different domains. Both use https and I want the main site, which uses the primary domain, to only be accessible through it&#8217;s www version. For the second site, since it&#8217;s a sub-domain, I only want it to only be available in https. [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/">Redirecting 2 domains from http to https and non-www to www</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Recently I had to configure some redirections in a website that contains two different domains.</p>
<p>Both use https and I want the main site, which uses the primary domain, to only be accessible through it&#8217;s www version. For the second site, since it&#8217;s a sub-domain, I only want it to only be available in https.</p>
<p><span id="more-7670"></span></p>
<p>Let&#8217;s say the domain is <strong>mydomain.com</strong> and the subdomain is <strong>mysub.mydomain.com</strong>. The only URLs I want to be available are:</p>
<ul>
<li>https://www.mydomain.com</li>
<li>https://mysub.mydomain.com</li>
</ul>
<p>Typically I would make the non-www to www redirection through the DNS provider, but for this website it was not possible.</p>
<p>The following is the configuration I used in my Web.config:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;rewrite&gt;
    &lt;rules&gt;
        &lt;rule name=&quot;Redirect from non www mydomain.com&quot; stopProcessing=&quot;true&quot;&gt;
            &lt;match url=&quot;.*&quot; /&gt;
            &lt;conditions&gt;
                &lt;add input=&quot;{HTTP_HOST}&quot; pattern=&quot;^mydomain.com$&quot; /&gt;
            &lt;/conditions&gt;
            &lt;action type=&quot;Redirect&quot; url=&quot;https://www.mydomain.com/{R:0}&quot; redirectType=&quot;Permanent&quot; /&gt;
        &lt;/rule&gt;
        &lt;rule name=&quot;Redirect from non https mydomain.com&quot; stopProcessing=&quot;true&quot;&gt;
            &lt;match url=&quot;.*&quot; /&gt;
            &lt;conditions&gt;
                &lt;add input=&quot;{HTTPS}&quot; pattern=&quot;^OFF$&quot; /&gt;
                &lt;add input=&quot;{HTTP_HOST}&quot; pattern=&quot;^www.mydomain.com$&quot; /&gt;
            &lt;/conditions&gt;
            &lt;action type=&quot;Redirect&quot; url=&quot;https://www.mydomain.com/{R:0}&quot; redirectType=&quot;Permanent&quot; /&gt;
        &lt;/rule&gt;
        &lt;rule name=&quot;Redirect from non https mysub.mydomain.com&quot; stopProcessing=&quot;true&quot;&gt;
            &lt;match url=&quot;.*&quot; /&gt;
            &lt;conditions&gt;
                &lt;add input=&quot;{HTTPS}&quot; pattern=&quot;^OFF$&quot; /&gt;
                &lt;add input=&quot;{HTTP_HOST}&quot; pattern=&quot;^mysub.mydomain.com$&quot; /&gt;
            &lt;/conditions&gt;
            &lt;action type=&quot;Redirect&quot; url=&quot;https://mysub.mydomain.com/{R:0}&quot; redirectType=&quot;Permanent&quot; /&gt;
        &lt;/rule&gt;
    &lt;/rules&gt;
&lt;/rewrite&gt;
</pre>
<p>Hope this helps!</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/">Redirecting 2 domains from http to https and non-www to www</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Raven.Studio.zip Index.html not available</title>
		<link>https://blogit.create.pt/ricardocosta/2018/10/10/raven-studio-zip-index-html-not-available/</link>
					<comments>https://blogit.create.pt/ricardocosta/2018/10/10/raven-studio-zip-index-html-not-available/#respond</comments>
		
		<dc:creator><![CDATA[Ricardo Costa]]></dc:creator>
		<pubDate>Wed, 10 Oct 2018 14:52:19 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=7580</guid>

					<description><![CDATA[<p>I had RavenDb embedded in a aspnet.core web api and I was getting this error when I tried to reach Raven Studio: The following file was not available: index.html. Please make sure that the Raven.Studio.zip file exist in the main directory (near the Raven.Server.exe). The solution was to copy Raven.Studio.zip to the root directory of [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2018/10/10/raven-studio-zip-index-html-not-available/">Raven.Studio.zip Index.html not available</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I had RavenDb embedded in a aspnet.core web api and I was getting this error when I tried to reach Raven Studio: The following file was not available: index.html. Please make sure that the Raven.Studio.zip file exist in the main directory (near the Raven.Server.exe).</p>
<p>The solution was to copy Raven.Studio.zip to the root directory of the web api.</p>
<p><img decoding="async" class="size-medium wp-image-7582" src="https://blogit.create.pt////wp-content/uploads/2018/10/Raven-Studio-Zip-300x73.png" alt="Raven Studio Zip" width="300" height="73" srcset="https://blogit.create.pt/wp-content/uploads/2018/10/Raven-Studio-Zip-300x73.png 300w, https://blogit.create.pt/wp-content/uploads/2018/10/Raven-Studio-Zip.png 458w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>&nbsp;</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2018/10/10/raven-studio-zip-index-html-not-available/">Raven.Studio.zip Index.html not available</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/ricardocosta/2018/10/10/raven-studio-zip-index-html-not-available/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>RavenDB embedded with ASP NET Core web API</title>
		<link>https://blogit.create.pt/ricardocosta/2018/09/04/ravendb-embedded-asp-net-core-web-api/</link>
					<comments>https://blogit.create.pt/ricardocosta/2018/09/04/ravendb-embedded-asp-net-core-web-api/#respond</comments>
		
		<dc:creator><![CDATA[Ricardo Costa]]></dc:creator>
		<pubDate>Tue, 04 Sep 2018 21:38:46 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET Core]]></category>
		<category><![CDATA[RavenDB]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=7417</guid>

					<description><![CDATA[<p>This post describes how you can set up a simple ASP NET Core web API with Visual Studio 2017 to use an embedded RavenDB. This is a step by step tutorial. a) You need to create a new ASP.NET Core Web Application with Visual Studio 2017 b) Choose .NET Core; ASP.NET Core 2.1; API c) [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2018/09/04/ravendb-embedded-asp-net-core-web-api/">RavenDB embedded with ASP NET Core web API</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This post describes how you can set up a simple ASP NET Core web API with Visual Studio 2017 to use an embedded RavenDB. This is a step by step tutorial.</p>
<p>a) You need to create a new ASP.NET Core Web Application with Visual Studio 2017<br />
b) Choose .NET Core; ASP.NET Core 2.1; API<br />
c) Right click the new project -&gt; Manage NuGet packages<br />
d) You have to add a new package source. Settings. New package source.</p>
<p style="padding-left: 30px">Name: <a href="https://www.myget.org/F/ravendb/api/v3/index.json">MyGet</a><br />
Source: https://www.myget.org/F/ravendb/api/v3/index.json</p>
<p>e) Choose the new source. Add:</p>
<p style="padding-left: 30px">RavenDB.Embedded &#8211; 4.1.1-nightly-20180904-0430<br />
RavenDB.Client &#8211; 4.1.1-nightly-20180904-0430</p>
<p>f) Create a DocumentStoreHolder class</p>
<pre class="brush: csharp; title: ; notranslate">

internal class DocumentStoreHolder
{
    private static Lazy&lt;IDocumentStore&gt; store = new Lazy&lt;IDocumentStore&gt;(CreateStore);

    public static IDocumentStore Store =&gt; store.Value;

    private static IDocumentStore CreateStore()
    {
        var serverOptions = new ServerOptions()
        {
            ServerUrl = &quot;http://127.0.0.1:60956/&quot;,
        };
        EmbeddedServer.Instance.StartServer(serverOptions);

        return EmbeddedServer.Instance.GetDocumentStore(&quot;MyRavenDBStore&quot;);
    }
}

</pre>
<p>g) And that&#8217;s it 🙂</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2018/09/04/ravendb-embedded-asp-net-core-web-api/">RavenDB embedded with ASP NET Core web API</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/ricardocosta/2018/09/04/ravendb-embedded-asp-net-core-web-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Using Deployment setting on Production Environment</title>
		<link>https://blogit.create.pt/antoniovargas/2010/03/02/using-deployment-setting-on-production-environment/</link>
					<comments>https://blogit.create.pt/antoniovargas/2010/03/02/using-deployment-setting-on-production-environment/#respond</comments>
		
		<dc:creator><![CDATA[António Vargas]]></dc:creator>
		<pubDate>Tue, 02 Mar 2010 05:02:00 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/antoniovargas/?p=141</guid>

					<description><![CDATA[<p>When i studied for the Microsoft exam (70-562, Microsoft .NET Framework 3.5, ASP.NET Application Development) i found an interesting setting that i didn&#8217;t known, the Deployment. This configuration setting ensures that your application will override important application level settings used when you developed your web application. It will ensure that the following configurations are done: [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/antoniovargas/2010/03/02/using-deployment-setting-on-production-environment/">Using Deployment setting on Production Environment</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When i studied for the <a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-562&amp;locale=en-us">Microsoft exam (70-562, Microsoft .NET Framework 3.5, ASP.NET Application Development)</a> i found an interesting setting that i didn&rsquo;t known, the Deployment.</p>
<p>This configuration setting ensures that your application will override important application level settings used when you developed your web application. It will ensure that the following configurations are done:</p>
<ul>
<li>debug is set to false</li>
<li>page output tracing is disabled</li>
<li>force customErrors to be shown to remote users (it will ensure that the end user only see friendly error messages)</li>
</ul>
<p>If you want to activate this setting, you need to put the following configuration on the machine.config:</p>
<p>&lt;configuration&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;system.web&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>&lt;deployment retail=&quot;true&quot;/&gt;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/system.web&gt;</p>
<p>&lt;/configuration&gt;</p>
<p>Some references:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ms228298.aspx" title="http://msdn.microsoft.com/en-us/library/ms228298.aspx">deployment Element (ASP.NET Settings Schema)</a></li>
<li><a href="http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx">Top 10 Best Practices for Production ASP.NET Applications</a></li>
</ul>
<p>The post <a href="https://blogit.create.pt/antoniovargas/2010/03/02/using-deployment-setting-on-production-environment/">Using Deployment setting on Production Environment</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/antoniovargas/2010/03/02/using-deployment-setting-on-production-environment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Controls collection cannot be modified because the control contains code blocks (i.e. )</title>
		<link>https://blogit.create.pt/ricardocosta/2008/05/07/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-i-e/</link>
					<comments>https://blogit.create.pt/ricardocosta/2008/05/07/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-i-e/#respond</comments>
		
		<dc:creator><![CDATA[Ricardo Costa]]></dc:creator>
		<pubDate>Wed, 07 May 2008 05:37:54 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/ricardocosta/?p=61</guid>

					<description><![CDATA[<p>Because I have pages with the markup &#60;%= someVariable%&#62; like &#60;script type=&#34;text/javascript&#34;&#62; function ConfirmCallBack(arg) { if (arg) &#60;%= this._nextPostBack%&#62; } &#60;/script&#62; I get the following error: &#34;The Controls collection cannot be modified because the control contains code blocks (i.e. &#60;% &#8230; %&#62;&#60;% &#8230; %&#62;).&#34; To correct it I had to change from &#60;%= this._nextPostBack%&#62; to [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2008/05/07/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-i-e/">The Controls collection cannot be modified because the control contains code blocks (i.e. &lt;% ... %&gt;)</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Because I have pages with the markup &lt;%= someVariable%&gt; like</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">script </span><span style="color: red">type</span><span style="color: blue">=&quot;text/javascript&quot;&gt;
</span>            
<span style="color: blue">  function </span>ConfirmCallBack(arg)
  {
    <span style="color: blue">if </span>(arg)
     &lt;%= <span style="color: blue">this</span>._nextPostBack%&gt;
  }</pre>
<pre class="code"><span style="color: blue">&lt;/</span><span style="color: #a31515">script</span><span style="color: blue">&gt;</span></pre>
<p>I get the following error: &quot;The Controls collection cannot be modified because the control contains code blocks (i.e. &lt;% &#8230; %&gt;&lt;% &#8230; %&gt;).&quot;</p>
<p>To correct it I had to change from </p>
<p>&lt;%= <span style="color: blue">this</span>._nextPostBack%&gt; </p>
<p>to </p>
<p>&lt;%# <span style="color: blue">this</span>._nextPostBack%&gt;</p>
<p>and in the PageLoad event add the call to Page&#8217;s DataBind method</p>
<pre class="code"><span style="color: blue">protected void </span>Page_Load(<span style="color: blue">object </span>sender, <span style="color: #2b91af">EventArgs </span>e)
{</pre>
<pre class="code">  ...</pre>
<pre class="code">
  Page.DataBind();
}</pre>
<p><a href="http://11011.net/software/vspaste"></a><a href="http://11011.net/software/vspaste"></a><a href="http://11011.net/software/vspaste"></a></p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2008/05/07/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-i-e/">The Controls collection cannot be modified because the control contains code blocks (i.e. &lt;% ... %&gt;)</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/ricardocosta/2008/05/07/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-i-e/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Codesmith, netTiers and reserved words</title>
		<link>https://blogit.create.pt/ricardocosta/2008/04/15/codesmith-nettiers-and-reserved-words/</link>
					<comments>https://blogit.create.pt/ricardocosta/2008/04/15/codesmith-nettiers-and-reserved-words/#respond</comments>
		
		<dc:creator><![CDATA[Ricardo Costa]]></dc:creator>
		<pubDate>Tue, 15 Apr 2008 07:05:00 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/ricardocosta/?p=81</guid>

					<description><![CDATA[<p>Started today using Codesmith tools today after a year or so since the last time that I used this great generation template based tool. I had to generate all the layers of an existent portal and I decided to use the netTiers templates to accomplish this task. And here are the problems that I had [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2008/04/15/codesmith-nettiers-and-reserved-words/">Codesmith, netTiers and reserved words</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Started today using <a href="http://www.codesmithtools.com/" target="_blank">Codesmith</a> tools today after a year or so since the last time that I used this great generation template based tool.</p>
<p>I had to generate all the layers of an existent portal and I decided to use the <a href="http://nettiers.com/" target="_blank">netTiers</a> templates to accomplish this task.</p>
<p>And here are the problems that I had to solve:</p>
<ul>
<li>In the <strong>Entities</strong> templates:</li>
</ul>
<p>I have a table named Entity that conflicts with the auxiliary class of the netTiers templates. It seems that the templates already generate a class called Entity and because there is a table called Entity there was a conflict.</p>
<p>I solved that using the alias text file feature of the templates that allows me to define a alias for any table that I have. So I just inserted a new line in my alias text file like this:</p>
<p>Entity:MyEntity</p>
<p>With this alias, netTiers generated a class for my table named MyEntity that didn&#039;t conflict with his own class Entity.</p>
<ul>
<li>In the <strong>Data</strong> templates:</li>
</ul>
<p>I had a table with two foreign keys. But the problem was that the foreign keys were on the same column of the table but referencing two different tables.</p>
<p>The problem was that netTiers generated two methods with the same name and signature GetByColumnForeingKey.</p>
<p>I had to change the schema and use two columns, each one referencing a different column in a different table.</p>
<ul>
<li>In the <strong>Domain</strong> templates:</li>
</ul>
<p>I have views in my database and I had compilation problems with the generated classes for these views.</p>
<p>For each view there are two generated files/classes:</p>
<p>MyView.cs and MyViewServiceBase.generated.cs</p>
<p>Where MyView inherits from MyViewBase. Because MyViewBase doesn&#039;t exist there was a compilation problem. I just had to strip the &quot;Service&quot; word from the netTiers templates so the file/class generated was MyViewBase.cs instead of MyViewServiceBase.cs</p>
<p>Another problem was with a table with a &quot;Type&quot; column. This gives this error:</p>
<p><em>Error&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; An object reference is required for the non-static field, method, or property &#039;TableBase.Type.get&#039;&nbsp;&nbsp;&nbsp; Domain\TableBase.generated.cs&nbsp;&nbsp;&nbsp; 1394&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp; Domain</em></p>
<p>The generated code was</p>
<p>DeepLoad(entity, false, DeepLoadType.ExcludeChildren, Type.EmptyTypes);</p>
<p>I had to change the template so to genreate</p>
<p>DeepLoad(entity, false, DeepLoadType.ExcludeChildren, System.Type.EmptyTypes);</p>
<ul>
<li>In the <strong>Data.SqlClient</strong> templates:</li>
</ul>
<p>There was an ambiguous table named Parameter. netTiers already creates a class named Parameter so I just had to add another line in my alias text file</p>
<p>Parameter:MyParameter</p>
<ul>
<li>And finally in the <strong>web</strong> templates:</li>
</ul>
<p>There was an ambiguous table named Page. I just had to add another line in my alias text file.</p>
<p>Page:MyPage</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2008/04/15/codesmith-nettiers-and-reserved-words/">Codesmith, netTiers and reserved words</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/ricardocosta/2008/04/15/codesmith-nettiers-and-reserved-words/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dealing with Memory Pressure problems in MOSS and WSS</title>
		<link>https://blogit.create.pt/miguelisidoro/2007/11/26/dealing-with-memory-pressure-problems-in-moss-and-wss/</link>
					<comments>https://blogit.create.pt/miguelisidoro/2007/11/26/dealing-with-memory-pressure-problems-in-moss-and-wss/#respond</comments>
		
		<dc:creator><![CDATA[Miguel Isidoro]]></dc:creator>
		<pubDate>Mon, 26 Nov 2007 17:29:40 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/miguelisidoro/?p=391</guid>

					<description><![CDATA[<p>I just a found another great post about memory management and performance issues on the SharePoint platform. This article defines the concept of &#8220;Memory Pressure&#8221; and discusses in great detail the most common reasons for memory pressure situations and best practices on how to avoid them. For more details, click here.</p>
<p>The post <a href="https://blogit.create.pt/miguelisidoro/2007/11/26/dealing-with-memory-pressure-problems-in-moss-and-wss/">Dealing with Memory Pressure problems in MOSS and WSS</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I just a found another great post about memory management and performance issues on the SharePoint platform. This article defines the concept of &#8220;Memory Pressure&#8221; and discusses in great detail the most common reasons for memory pressure situations and best practices on how to avoid them. For more details, click <a href="http://blogs.technet.com/stefan_gossner/archive/2007/11/26/dealing-with-memory-pressure-problems-in-moss-wss.aspx" target="_blank">here</a>.</p>
<p>The post <a href="https://blogit.create.pt/miguelisidoro/2007/11/26/dealing-with-memory-pressure-problems-in-moss-and-wss/">Dealing with Memory Pressure problems in MOSS and WSS</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/miguelisidoro/2007/11/26/dealing-with-memory-pressure-problems-in-moss-and-wss/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Page.EnableEventValidation and “Invalid postback or callback argument” error</title>
		<link>https://blogit.create.pt/miguelisidoro/2007/11/19/page-enableeventvalidation-and-invalid-postback-or-callback-argument-error/</link>
					<comments>https://blogit.create.pt/miguelisidoro/2007/11/19/page-enableeventvalidation-and-invalid-postback-or-callback-argument-error/#respond</comments>
		
		<dc:creator><![CDATA[Miguel Isidoro]]></dc:creator>
		<pubDate>Mon, 19 Nov 2007 07:39:00 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/miguelisidoro/?p=471</guid>

					<description><![CDATA[<p>I developed a custom web part that basically renders a form and submits the entered data into a SharePoint list. The problem I was having is that when the form button was clicked, I got the following error: &#8220;Invalid postback or callback argument. Event validation is enabledusing &#60;pages enableEventValidation=&#8221;true&#8221;/&#62; in configuration or &#60;%@ PageEnableEventValidation=&#8221;true&#8221; %&#62; [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/miguelisidoro/2007/11/19/page-enableeventvalidation-and-invalid-postback-or-callback-argument-error/">Page.EnableEventValidation and “Invalid postback or callback argument” error</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I developed a custom web part that basically renders a form and submits the entered data into a SharePoint list. The problem I was having is that when the form button was clicked, I got the following error:</p>
<p>&#8220;Invalid postback or callback argument. Event validation is enabled<br />using &lt;pages enableEventValidation=&#8221;true&#8221;/&gt; in configuration or &lt;%@ Page<br />EnableEventValidation=&#8221;true&#8221; %&gt; in a page. For security purposes, this<br />feature verifies that arguments to postback or callback events originate<br />from the server control that originally rendered them. If the data is<br />valid and expected, use the<br />ClientScriptManager.RegisterForEventValidation method in order to<br />register the postback or callback data for validation.&#8221;</p>
<p>This error message is related to a new security enhancement brought by ASP.NET 2.0 called EventValidation. If enabled (default value), this new feature ensures that ASP.NET will only allow the specific events that are raised on a given control during a postback or callback. The main purpose of this security validation is to reduce the risk of <a title="remarksToggle" name="remarksToggle"></a>unauthorized postback requests and callbacks (more information on this <a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.page.enableeventvalidation.aspx">here</a>).</p>
<p>After some research on the Internet, two main approaches were given:</p>
<ul>
<li>Set the &lt;pages EnableEventValidation=&#8221;false&#8221; …/&gt; in the web.config or at the page level – This is not a recommended approach due to the associated security risks, since event validation will not be performed and the risk of unauthorized postback requests and callbacks will increase.</li>
<li>Use the Page.ClientScript.RegisterForEventValidation(ctrl. UniqueID) in the control – this approach will register the given control and its events for event validation. This seemed like a good approach since it would allow maintaining the event validation but it didn&#8217;t solve the problem. Apparently, the internal variable _requestValueCollection of the Page class<strong>,</strong> is never initialized, so method EnsureEventValidationFieldLoaded will never load the dictionary with UniqueIDs and therefore cannot find the control which is authorized to make postback via RegisterForEventValidation.</li>
</ul>
<p>After this, I tried a different approach, more successfully. The web part is included in the context of a SharePoint page layout. After analyzing this web page, I found out that it included two nested &lt;form&gt;&lt;/form&gt; elements. After removing these elements, the form submission started working properly.</p>
<h1>Related Articles</h1>
<p>To learn why your business should migrate to SharePoint Online and Office 365, click <a href="https://blogit.create.pt////miguelisidoro/2019/07/29/why-your-business-should-migrate-to-sharepoint-online-and-office-365-the-value-offer-part-1/" target="_blank" rel="noreferrer noopener">here</a> and <a href="https://blogit.create.pt////miguelisidoro/2019/07/29/why-your-business-should-migrate-to-sharepoint-online-and-office-365-the-value-offer-part-2/" target="_blank" rel="noreferrer noopener">here</a>.</p>
<p>If you are new to SharePoint and Office 365 and want to learn all about it, take a look at these <a href="https://blogit.create.pt////miguelisidoro/2018/10/17/sharepoint-and-office-365-learning-resources/" target="_blank" rel="noopener noreferrer">learning resources</a>.</p>
<p>If you are work in a large organization who is using Office 365 or thinking to move to Office 365 and is considering between a single or multiple Office 365 tenants, I invite you to read <a href="https://blogit.create.pt////miguelisidoro/2019/01/07/pros-and-cons-of-single-tenant-vs-multiple-tenants-in-office-365/" target="_blank" rel="noreferrer noopener">this article</a>.</p>
<p>If you or your customers are not ready to move entirely to the Cloud and Office 365, a hybrid scenario could be an interesting scenario and SharePoint 2019 RTM was recently announced with improved hybrid support! To learn all about SharePoint 2019 and all its features, click <a href="https://blogit.create.pt////miguelisidoro/2018/11/01/meet-the-new-modern-sharepoint-server-sharepoint-2019-rtm-is-here/" target="_blank" rel="noopener noreferrer">here</a>.</p>


<p>If you are a SharePoint administrator or a SharePoint developer who wants to learn more about how to install a SharePoint 2019 farm in an automated way using PowerShell, I invite you to click <a href="https://blogit.create.pt////miguelisidoro/2018/12/09/how-to-install-a-sharepoint-2019-farm-using-powershell-and-autospinstaller-part-1/" target="_blank" rel="noreferrer noopener">here</a> and <a href="https://blogit.create.pt////miguelisidoro/2018/12/09/how-to-install-a-sharepoint-2019-farm-using-powershell-and-autospinstaller-part-2/" target="_blank" rel="noreferrer noopener">here</a>.</p>



<p>If you want to learn how to upgrade a SharePoint 2013 farm to SharePoint 2019, click <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/03/06/how-to-upgrade-from-sharepoint-2013-to-sharepoint-2019-step-by-step-part-1/" target="_blank">here </a>and <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/03/06/how-to-upgrade-from-sharepoint-2013-to-sharepoint-2019-step-by-step-part-2/" target="_blank">here</a>.</p>



<p>If you want to learn all the steps and precautions necessary to successfully keep your SharePoint farm updated and be ready to start your move to the cloud, click <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/04/08/how-to-install-sharepoint-cumulative-updates-in-a-sharepoint-farm-step-by-step/" target="_blank">here</a>.</p>



<p>If you learn how to greatly speed up your SharePoint farm update process to ensure your SharePoint farm keeps updated and you stay one step closer to start your move to the cloud, click <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/05/02/how-to-speed-up-the-installation-of-sharepoint-cumulative-updates-using-powershell-step-by-step/" target="_blank">here</a>. </p>



<p>If SharePoint 2019 is still not an option, you can learn more about how to install a SharePoint 2016 farm in an automated way using PowerShell, click <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2018/07/28/how-to-install-a-sharepoint-2016-farm-using-powershell-and-autospinstaller-part-1/" target="_blank">here</a>&nbsp;and&nbsp;<a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2018/07/28/how-to-install-a-sharepoint-2016-farm-using-powershell-and-autospinstaller-part-2/" target="_blank">here</a>.</p>



<p>If you want to learn how to upgrade a SharePoint 2013 farm to SharePoint 2019, click <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/02/04/sharepoint-upgrade-upgrading-a-sharepoint-2010-farm-to-sharepoint-2016-step-by-step-part-1/" target="_blank">here </a>and <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/02/04/sharepoint-upgrade-upgrading-a-sharepoint-2010-farm-to-sharepoint-2016-step-by-step-part-2/" target="_blank">here</a>.</p>



<p>If you want to know all about the latest SharePoint and Office 365 announcements from SharePoint Conference 2019, click <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/06/05/whats-new-for-sharepoint-and-office-365-from-sharepoint-conference-2019-part-1/" target="_blank">here </a>and <a rel="noreferrer noopener" href="https://blogit.create.pt////miguelisidoro/2019/06/05/whats-new-for-sharepoint-and-office-365-from-sharepoint-conference-2019-part-2/" target="_blank">here</a>. </p>



<p>Happy SharePointing!</p>
<p>The post <a href="https://blogit.create.pt/miguelisidoro/2007/11/19/page-enableeventvalidation-and-invalid-postback-or-callback-argument-error/">Page.EnableEventValidation and “Invalid postback or callback argument” error</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/miguelisidoro/2007/11/19/page-enableeventvalidation-and-invalid-postback-or-callback-argument-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Add a custom section to web.config</title>
		<link>https://blogit.create.pt/ricardocosta/2007/10/23/add-a-custom-section-to-web-config/</link>
					<comments>https://blogit.create.pt/ricardocosta/2007/10/23/add-a-custom-section-to-web-config/#respond</comments>
		
		<dc:creator><![CDATA[Ricardo Costa]]></dc:creator>
		<pubDate>Tue, 23 Oct 2007 18:40:41 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/ricardocosta/?p=281</guid>

					<description><![CDATA[<p>If you have created a custom section like this, and if you want to add it programmatically to web.config then you have to: Use the WebConfigurationManager class and open the web Configuration config = WebConfigurationManager.OpenWebConfiguration(path, site); From MSDN path The virtual path to the configuration file. site The name of the application Web site, as [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2007/10/23/add-a-custom-section-to-web-config/">Add a custom section to web.config</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>If you have created a custom section like <a href="http://blogit.create.pt/blogs/ricardocosta/archive/2007/10/16/How-to-create-a-custom-section-for-an-application-config-file.aspx">this</a>, and if you want to add it programmatically to web.config then you have to:
</p>
<ol>
<li>Use the WebConfigurationManager class and open the web
</li>
</ol>
<p><strong>Configuration config = WebConfigurationManager.OpenWebConfiguration(path, site);<br />
</strong></p>
<p>From MSDN
</p>
<p><span style="font-size:9pt"><em>path<br />
</em></span></p>
<p><span style="font-size:9pt">The virtual path to the configuration file.<br />
</span></p>
<p><span style="font-size:9pt"><em>site<br />
</em></span></p>
<p><span style="font-size:9pt">The name of the application Web site, as displayed in IIS configuration.<br />
</span></p>
<p>
 </p>
<ol>
<li>Create a ConfigurationSectionGroup and add it to the Configuration object
</li>
</ol>
<p><strong>ConfigurationSectionGroup sectionGroup = new ConfigurationSectionGroup();<br />
</strong></p>
<p><strong>config.SectionGroups.Add(&#8220;GROUP_NAME&#8221;, sectionGroup);<br />
</strong></p>
<p>
 </p>
<ol>
<li>Create a new instance of your section (MyCustomSection) and add it to the section group
</li>
</ol>
<p><strong>MyCustomSection section = new MyCustomSection ();<br />
</strong></p>
<p><strong>sectionGroup.Sections.Add(&#8220;SECTION_NAME&#8221;, section);<br />
</strong></p>
<p>
 </p>
<ol>
<li>Fill your custom section properties
</li>
</ol>
<p><strong>section.Property1 = &#8220;0123456789&#8221;;<br />
</strong></p>
<p><strong>section.Property2 = &#8220;Lorem ipsum dolor sit amet&#8221;;<br />
</strong></p>
<p>
 </p>
<ol>
<li>And save the configuration
</li>
</ol>
<p><strong>config.Save();<br />
</strong></p>
<p>If you take a look at your web.config you will see that it was modified programmatically as you specified. I use this technique in the setup process of sites. Cool!</p>
<p>The post <a href="https://blogit.create.pt/ricardocosta/2007/10/23/add-a-custom-section-to-web-config/">Add a custom section to web.config</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/ricardocosta/2007/10/23/add-a-custom-section-to-web-config/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
