[rabbitmq-discuss] Security Exception in IIS using RabbitMQ Client
Tim Watson
watson.timothy at gmail.com
Fri Jul 20 22:56:35 BST 2012
On 20 Jul 2012, at 19:43, Dave Seltzer <dseltzer at tveyes.com> wrote:
> Thanks for your help Tim,
>
> It seems like this isn't an issue with actual file IO, but rather Code
> Security.
>
> I've tried setting <trust level="Full" originUrl="" /> in the web.config,
> but it doesn't seem to help.
>
Yes that was my first suspicion. There is a way of setting policy for your web app and for assemblies your linking to but I don't remember off-hand how to set up policies for assemblies outside the GAC. How do you reference the rabbit client assembly in your project? Is this just being done in visual studio or are there settings in the web.config? Forgive my .NET being a bit rusty these days!
> The full stacktrace is below.
>
> -D
>
> [SecurityException: Request for the permission of type
> 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0,
> Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
> System.Security.CodeAccessSecurityEngine.Check(Object demand,
> StackCrawlMark& stackMark, Boolean isPermSet) +0
> System.Security.CodeAccessPermission.Demand() +54
> System.Reflection.Assembly.VerifyCodeBaseDiscovery(String codeBase)
> +162
> System.Reflection.Assembly.GetName(Boolean copiedName) +117
> RabbitMQ.Client.Impl.ConnectionBase.DefaultClientProperties() +42
> RabbitMQ.Client.ConnectionFactory..ctor() +70
> ASP.api_messagesearch_aspx.__Render__control1(HtmlTextWriter __w,
> Control parameterContainer) in \\[snip]\api\MessageSearch.aspx:9
> System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,
> ICollection children) +115
> System.Web.UI.Page.Render(HtmlTextWriter writer) +38
> System.Web.UI.Page.ProcessRequestMain(Boolean
> includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
> +11070247
> System.Web.UI.Page.ProcessRequest(Boolean
> includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
> +11069786
> System.Web.UI.Page.ProcessRequest() +91
> System.Web.UI.Page.ProcessRequest(HttpContext context) +240
> ASP.api_messagesearch_aspx.ProcessRequest(HttpContext context) in
> c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET
> Files\root\cb973a2c\79ccea1e\App_Web_nkfbtca4.9.cs:0
>
> System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionS
> tep.Execute() +599
> System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
> completedSynchronously) +171
>
> -----Original Message-----
> From: rabbitmq-discuss-bounces at lists.rabbitmq.com
> [mailto:rabbitmq-discuss-bounces at lists.rabbitmq.com] On Behalf Of Tim
> Watson
> Sent: Friday, July 20, 2012 2:33 PM
> To: Discussions about RabbitMQ
> Cc: Discussions about RabbitMQ
> Subject: Re: [rabbitmq-discuss] Security Exception in IIS using RabbitMQ
> Client
>
>
> http://stackoverflow.com/questions/4925331/system-security-permissions-fil
> eiopermission-when-accessing-folder-outside-web-s
>
>
> On 20 Jul 2012, at 19:28, Tim Watson <watson.timothy at gmail.com> wrote:
>
>>
>> On 20 Jul 2012, at 19:06, Dave Seltzer <dseltzer at tveyes.com> wrote:
>>
>>> I'm having a bit of trouble using the .NET RabbitMQ client in IIS,
> maybe
>>> someone knows what I'm running into.
>>>
>>> Here's the code I'm trying to run:
>>>
>>> ConnectionFactory rabbitConFactory = new ConnectionFactory();
>>> rabbitConFactory.Address = "hostname";
>>> rabbitConFactory.VirtualHost = "/path";
>>> rabbitConFactory.UserName = "user";
>>> rabbitConFactory.Password = "password";
>>>
>>> IConnection connection = rabbitConFactory.CreateConnection();
>>>
>>> IModel channel = connection.CreateModel();
>>>
>>> Dictionary<String, Object> args = new Dictionary<string, object>();
>>> args.Add("x-ha-policy", "all");
>>> String ExchangeName = "SearchInstructions";
>>> channel.ExchangeDeclare(ExchangeName, "topic", true, false, args);
>>>
>>> Guid myId = new Guid();
>>> String RoutingKey = myId.ToString() + ".Instruction";
>>> IBasicProperties MessageProperties = channel.CreateBasicProperties();
>>> MessageProperties.SetPersistent(true);
>>> MessageProperties.ContentEncoding = "UTF-8";
>>> MessageProperties.ContentType = "text/xml";
>>> MessageProperties.Headers.Add("x-origin",
>>> Request.ServerVariables["ServerName"]);
>>>
>>> String messageContent = "<foo />";
>>> byte[] data = System.Text.Encoding.UTF8.GetBytes(messageContent);
>>> channel.BasicPublish(ExchangeName,RoutingKey, MessageProperties,
>>> data);
>>>
>>> channel.Close();
>>> connection.Close();
>>>
>>> When I run the code in an ASPX page I receive the following Security
>>> Exception:
>>> Security Exception
>>>
>>> Description: The application attempted to perform an operation not
>>> allowed by the security policy. To grant this application the required
>>> permission please contact your system administrator or change the
>>> application's trust level in the configuration file.
>>>
>>> Exception Details: System.Security.SecurityException: Request for the
>>> permission of type 'System.Security.Permissions.FileIOPermission,
>>> mscorlib, Version=2.0.0.0, Culture=neutral,
>>> PublicKeyToken=b77a5c561934e089' failed.
>>>
>>> I'm not really sure how to proceed. This sounds like an IIS issue, but
>>> someone here must have tackled this problem before.
>>>
>>
>> This is indeed an IIS configuration issue. You need to grant the
> assembly the appropriate code access permissions. It's been a long time
> since I looked at IIS, so I can't tell you exactly where to set this up
> until I'm in front of a browser, but checking msdn for Code Access,
> FileIOPermission, assemblies and IIS is where I'd start if you want to get
> a head start. Post the list if you figure it out first please! :)
>>
>>> Thanks much!
>>>
>>> -Dave
>>> _______________________________________________
>>> rabbitmq-discuss mailing list
>>> rabbitmq-discuss at lists.rabbitmq.com
>>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>> _______________________________________________
>> rabbitmq-discuss mailing list
>> rabbitmq-discuss at lists.rabbitmq.com
>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com
> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
More information about the rabbitmq-discuss
mailing list