Hi,

It got worse. Building a custom AttributeFactory can only handle a few cases, I needed to subclass _every_ TokenStream/TokenFilter to override all attribute-handling methods (AddAttribute, GetAttribute, etc), and all analyzers to use these streams, to use a dictionary with strong references just for medium trust... I gave up before doing that. ;)

Is there any use cases where we need to garbage collect attributes before the stream/attribute source is closed? Changing to a normal dictionary seems like a quick fix.

// Simon


On 2012-08-14 17:21, Christopher Currens wrote:
It must be something we've missed, as we want to target medium trust
locations in the future.  I can't think of anything off the top of my
head that would require medium trust, though, let alone unmanaged
code.  I'll dive into this.


Thanks,
Christopher

On Mon, Aug 13, 2012 at 10:01 PM, Simon Svensson <si...@devhost.se> wrote:
Hi,

I'm having trouble upgrading a web application running under medium trust
from 2.9.4 to 3.0.3. Code that previously worked now throws a
SecurityException.

[SecurityException: Request for the permission of type
'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
    Lucene.Net.Support.WeakKey`1..ctor(T key) +0
    Lucene.Net.Support.WeakDictionary`2.get_Item(TKey key) +113
    Lucene.Net.Util.DefaultAttributeFactory.GetClassForInterface() +178
    Lucene.Net.Util.DefaultAttributeFactory.CreateAttributeInstance() +95
    Lucene.Net.Util.AttributeSource.AddAttribute() +375
    Lucene.Net.Analysis.CharTokenizer..ctor(TextReader input) +126
    Lucene.Net.Analysis.WhitespaceTokenizer..ctor(TextReader in) +37


The DefaultAttributeFactory, via WeakReference, requires
SecurityPermissionFlag.UnmanagedCode which is not present under medium
trust. There's an AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY which I could
to replace the DefaultAttributeFactory, but it's readonly. I'm rewriting my
code to call the constructor overload (on tokenizers) accepting an
AttributeFactory, but this means that I cannot use any existing Analyzer
since they don't provide an extension points to change the AttributeFactory.

Is medium trust [using default classes] dropped in 3.0.3, or is this
something we've missed?

// Simon

Reply via email to