<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Blogs - DotNetMatt</title>
		<link>https://www.developpez.net/forums/blogs/354675-dotnetmatt/</link>
		<description>Developpez.com, le Club des Développeurs et IT Pro</description>
		<language>fr</language>
		<lastBuildDate>Wed, 08 Apr 2026 13:55:10 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.jpg</url>
			<title>Forum du club des développeurs et IT Pro - Blogs - DotNetMatt</title>
			<link>https://www.developpez.net/forums/blogs/354675-dotnetmatt/</link>
		</image>
		<item>
			<title><![CDATA[ASP.NET Core 1.1 : erreur Inheritance security rules violated by type : 'System.Net.Http.WebRequestHandler']]></title>
			<link>https://www.developpez.net/forums/blogs/354675-dotnetmatt/b3318/asp-net-core-1-1-erreur-inheritance-security-rules-violated-by-type-system-net-http-webrequesthandler/</link>
			<pubDate>Sat, 01 Jul 2017 04:29:32 GMT</pubDate>
			<description>En faisant des tests...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">En faisant des tests d'utilisation de l'API de gestion d'Azure pour les comptes de stockage depuis une appli Web ASP.NET Core 1.1, je me prend l'exception &quot;Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible.&quot;.<br />
<br />
C'est etrange car depuis une application Console en .NET 4.6.2 ca fonctionne parfaitement.<br />
<br />
Cela se produit lorsque je cree mon client de cette facon :<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code C# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;"><span style="color: #0000ff;">var</span> storeManagementClient = <span style="color: #0000ff;">new</span> StorageManagementClient<span class="br0">&#40;</span>credentials<span class="br0">&#41;</span>;</pre>
</div>ou de cette facon :<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code C# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;"><span style="color: #0000ff;">var</span> storeManagementClient = CloudContext.Clients.CreateStorageManagementClient<span class="br0">&#40;</span>credentials<span class="br0">&#41;</span>;</pre>
</div><br />
En fouillant un peu, il s'avere que c'est un probleme qui a donne du fil a retordre aux equipes qui bossent sur Core, comme vous pouvez le voir sur ce ticket : <a href="https://github.com/dotnet/corefx/issues/11100" target="_blank">Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible. #11100 </a>.<br />
<br />
Il aura fallu plusieurs mois pour trouver une solution. Aujourd'hui, il suffit donc de mettre a jour (ou d'installer) le package System.Net.Http vers la version 4.3.1 ou 4.3.2 ou &gt;. Ca vous evitera peut-etre de perdre quelques heures a chercher...</blockquote>

]]></content:encoded>
			<dc:creator>DotNetMatt</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/354675-dotnetmatt/b3318/asp-net-core-1-1-erreur-inheritance-security-rules-violated-by-type-system-net-http-webrequesthandler/</guid>
		</item>
		<item>
			<title><![CDATA[Exemple d'utilisation du Big Data chez McDonald's]]></title>
			<link>https://www.developpez.net/forums/blogs/354675-dotnetmatt/b1747/exemple-d-utilisation-big-data-chez-mcdonald-s/</link>
			<pubDate>Thu, 17 Nov 2016 20:14:28 GMT</pubDate>
			<description>Je voulais juste partager ce...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Je voulais juste partager ce lien avec vous : <a href="http://www.talend.com/resources/webinars/advanced-business-intelligence-at-mcdonalds" target="_blank">http://www.talend.com/resources/webi...e-at-mcdonalds</a><br />
<br />
Comme vous l'aurez devine, c'est oriente pour vanter les merites de Talend, mais ca traite de Big Data. Il y en a d'autres en <a href="http://www.talend.com/resources?qt-resources_tabs=3#qt-resources_tabs" target="_blank">cliquant ici</a>.<br />
<br />
Tout est en Anglais, mais c'est interessant et ca donne des exemples d'implementations concretes. Avis aux amateurs !</blockquote>

]]></content:encoded>
			<dc:creator>DotNetMatt</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/354675-dotnetmatt/b1747/exemple-d-utilisation-big-data-chez-mcdonald-s/</guid>
		</item>
		<item>
			<title>Comment utiliser Ninject dans un Azure Worker Role</title>
			<link>https://www.developpez.net/forums/blogs/354675-dotnetmatt/b1051/utiliser-ninject-azure-worker-role/</link>
			<pubDate>Tue, 26 Jan 2016 11:02:03 GMT</pubDate>
			<description>Pour utiliser Ninject dans un...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Pour utiliser Ninject dans un Worker Role, il faut tout d'abord installer 2 packages Nuget :<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:60px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">Install-Package Ninject
Install-Package Ninject.Extensions.Azure</pre></td></tr></table></pre>
</div>Le code source du package Ninject.Extensions.Azure est disponible ici : <a href="https://github.com/ninject/Ninject.Extensions.Azure" target="_blank">https://github.com/ninject/Ninject.Extensions.Azure</a><br />
<br />
Votre classe WorkerRole hérite par défaut de la classe abstraite <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint</span>. Il faut la modifier pour qu'elle hérite de la classe abstraite <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Ninject.Extensions.Azure.NinjectRoleEntryPoint</span> :<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code C# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:60px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> WorkerRole : NinjectRoleEntryPoint
<span class="br0">&#123;</span> <span class="br0">&#125;</span></pre></td></tr></table></pre>
</div>A ce stade, vous pouvez supprimer les méthodes <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">OnStart</span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">OnStop</span> qui ne sont plus utilisables avec la classe <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">NinjectRoleEntryPoint</span>. Il faut les remplacer par les méthodes suivantes :<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code C# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">/// &lt;summary&gt;</span>
<span style="color: #808080;">/// D&eacute;clench&eacute;e apr&egrave;s la cr&eacute;ation du Kernel.</span>
<span style="color: #808080;">/// &lt;/summary&gt;</span>
<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">bool</span> OnRoleStarted<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span> <span class="br0">&#125;</span>
&nbsp;
<span style="color: #808080;">/// &lt;summary&gt;</span>
<span style="color: #808080;">/// D&eacute;clench&eacute;e pendant l'arr&ecirc;t du Worker Role, avant que le Kernel ne soit dispos&eacute;.</span>
<span style="color: #808080;">/// &lt;/summary&gt;</span>
<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">void</span> OnRoleStopping<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span> <span class="br0">&#125;</span>
&nbsp;
<span style="color: #808080;">/// &lt;summary&gt;</span>
<span style="color: #808080;">/// D&eacute;clench&eacute;e pendant l'arr&ecirc;t du Worker Role, apr&egrave;s que le Kernel ait &eacute;t&eacute; dispos&eacute;.</span>
<span style="color: #808080;">/// &lt;/summary&gt;</span>
<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">void</span> OnRoleStopped<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span> <span class="br0">&#125;</span>
&nbsp;
<span style="color: #808080;">/// &lt;summary&gt;</span>
<span style="color: #808080;">/// Dans cette m&eacute;thode vous devez cr&eacute;er le Kernel et charger les modules dont vous avez besoin.</span>
<span style="color: #808080;">/// &lt;/summary&gt;</span>
<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> IKernel CreateKernel<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span> <span class="br0">&#125;</span></pre></td></tr></table></pre>
</div>Au final, voici un exemple de Worker Role utilisant Ninject :<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code C# :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> WorkerRole : NinjectRoleEntryPoint
<span class="br0">&#123;</span>
	<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">readonly</span> CancellationTokenSource cancellationTokenSource = <span style="color: #0000ff;">new</span> CancellationTokenSource<span class="br0">&#40;</span><span class="br0">&#41;</span>;
	<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">readonly</span> ManualResetEvent runCompleteEvent = <span style="color: #0000ff;">new</span> ManualResetEvent<span class="br0">&#40;</span><span style="color: #0000ff;">false</span><span class="br0">&#41;</span>;
&nbsp;
	<span style="color: #0000ff;">private</span> IKernel _kernel;
&nbsp;
	<span style="color: #0000ff;">private</span> IRepository _repository;
&nbsp;
	<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">void</span> Run<span class="br0">&#40;</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		Trace.TraceInformation<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;WorkerRole1 is running&quot;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">try</span>
		<span class="br0">&#123;</span>
			<span style="color: #0000ff;">this</span>.RunAsync<span class="br0">&#40;</span><span style="color: #0000ff;">this</span>.cancellationTokenSource.Token<span class="br0">&#41;</span>.Wait<span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
		<span style="color: #0000ff;">finally</span>
		<span class="br0">&#123;</span>
			<span style="color: #0000ff;">this</span>.runCompleteEvent.<span style="color: #0080ff;">Set</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080;">/// &lt;summary&gt;</span>
	<span style="color: #808080;">/// D&eacute;clench&eacute;e apr&egrave;s la cr&eacute;ation du Kernel.</span>
	<span style="color: #808080;">/// &lt;/summary&gt;</span>
	<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">bool</span> OnRoleStarted<span class="br0">&#40;</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span style="color: #808080;">// Set the maximum number of concurrent connections</span>
		ServicePointManager.DefaultConnectionLimit = <span style="color: #cc66cc;">12</span>;
&nbsp;
		<span style="color: #808080;">// For information on handling configuration changes</span>
		<span style="color: #808080;">// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.</span>
&nbsp;
		<span style="color: #0000ff;">bool</span> result = <span style="color: #0000ff;">base</span>.OnStart<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		Trace.TraceInformation<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;WorkerRole1 has been started&quot;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">this</span>._repository = <span style="color: #0000ff;">this</span>._kernel.<span style="color: #0080ff;">Get</span>&lt;IRepository&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">return</span> result;
	<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080;">/// &lt;summary&gt;</span>
	<span style="color: #808080;">/// D&eacute;clench&eacute;e pendant l'arr&ecirc;t du Worker Role, avant que le Kernel ne soit dispos&eacute;.</span>
	<span style="color: #808080;">/// &lt;/summary&gt;</span>
	<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">void</span> OnRoleStopping<span class="br0">&#40;</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080;">/// &lt;summary&gt;</span>
	<span style="color: #808080;">/// D&eacute;clench&eacute;e pendant l'arr&ecirc;t du Worker Role, apr&egrave;s que le Kernel ait &eacute;t&eacute; dispos&eacute;.</span>
	<span style="color: #808080;">/// &lt;/summary&gt;</span>
	<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> <span style="color: #0000ff;">void</span> OnRoleStopped<span class="br0">&#40;</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		Trace.TraceInformation<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;WorkerRole1 is stopping&quot;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">this</span>.cancellationTokenSource.Cancel<span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span style="color: #0000ff;">this</span>.runCompleteEvent.WaitOne<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">base</span>.OnStop<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		Trace.TraceInformation<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;WorkerRole1 has stopped&quot;</span><span class="br0">&#41;</span>;
	<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #808080;">/// &lt;summary&gt;</span>
	<span style="color: #808080;">/// Dans cette m&eacute;thode vous devez cr&eacute;er le Kernel et charger les modules dont vous avez besoin.</span>
	<span style="color: #808080;">/// &lt;/summary&gt;</span>
	<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">override</span> IKernel CreateKernel<span class="br0">&#40;</span><span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span style="color: #0000ff;">this</span>._kernel = <span style="color: #0000ff;">new</span> StandardKernel<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">this</span>._kernel.Bind&lt;IRepository&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>.To&lt;Repository&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
		<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span>._kernel;
	<span class="br0">&#125;</span>
&nbsp;
	<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">async</span> Task RunAsync<span class="br0">&#40;</span>CancellationToken cancellationToken<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span style="color: #0000ff;">while</span> <span class="br0">&#40;</span>!cancellationToken.IsCancellationRequested<span class="br0">&#41;</span>
		<span class="br0">&#123;</span>
			Trace.TraceInformation<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Working&quot;</span><span class="br0">&#41;</span>;
&nbsp;
			<span style="color: #808080;">// La logique du Worker Role doit &ecirc;tre mise ici :</span>
			<span style="color: #0000ff;">var</span> rep = <span style="color: #0000ff;">this</span>._repository.A<span class="br0">&#40;</span><span class="br0">&#41;</span>;
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></pre>
</div></blockquote>

]]></content:encoded>
			<dc:creator>DotNetMatt</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/354675-dotnetmatt/b1051/utiliser-ninject-azure-worker-role/</guid>
		</item>
	</channel>
</rss>
