我想使用 silverlight 作为我的 windows 服务接口。为此,我使用自定义 Web 服务器来提供 xap 文件,它工作正常。
现在我想使用 RiaServices,但当然我没有涉及 IIS。
这是我的代码:
[EnableClientAccess]
public class TestDomainService : DomainService {
public IQueryable<Foo> GetPontos() {
List<Foo> list = new List<Foo>();
list.Add(new Foo {Id = 1});
return list.AsQueryable();
}
}
public class Foo {
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
和程序:
static void Main(string[] args) {
DomainServiceHost host = new DomainServiceHost(typeof(TestDomainService), new Uri("http://0.0.0.0:8099/TestDomainService"));
host.Open();
}
您可以在空的 cmd 应用程序中使用此代码,一旦您点击播放,就会引发运行时异常:
System.TypeAccessException 未处理 消息=通过安全透明方法“System.ServiceModel.DomainServices.Server.DomainTypeDescriptionProvider.GetForeignKeyMembers()”访问安全关键类型 System.ComponentModel.DataAnnotations.AssociationAttribute 的尝试失败。程序集 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 是有条件的 APTCA 程序集,在当前 AppDomain 中未启用。要使该程序集被部分信任或安全透明代码使用,请添加程序集名称'System.ComponentModel.DataAnnotations,PublicKey=0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9' to the the PartialTrustVisibleAssemblies list when creating the AppDomain. Source=System.ServiceModel.DomainServices.Server TypeName="" StackTrace:在 System.ServiceModel.DomainServices.Server.DomainTypeDescriptionProvider.GetForeignKeyMembers() 在 System.ServiceModel.DomainServices.Server.DomainTypeDescriptionProvider.GetTypeDescriptor(Type objectType, Object instance) 在 System .ComponentModel.TypeDescriptor.TypeDescriptionNode.DefaultTypeDescriptor.System.ComponentModel。System.Collections.Concurrent.ConcurrentDictionary 处的DisplayClass8.b _7(类型类型)2.GetOrAdd(TKey key, Func
2 valueFactory) 在 System.ServiceModel.DomainServices.Server.DomainServiceDescription.GetDescription(Type domainServiceType) 在 System.ServiceModel.DomainServices.Hosting.DomainServiceHost..ctor(Type domainServiceType, Uri[] baseAddresses) 在 PartialTrustTest.Program.Main(String[ ] args) 在 D:\Users\carlucci\Documents\My Dropbox\My Dropbox\Way2\PartialTrustTest\PartialTrustTest\Program.cs:第 10 行 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 在 System.AppDomain .nExecuteAssembly(RuntimeAssembly 程序集,String[] args) 在 System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel) 在 System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() 在 System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext ,String[] activationCustomData) 在 System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext) 在 System.Activator.CreateInstance(ActivationContext activationContext) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() 在 System.Threading.ThreadHelper.ThreadStart_Context(对象状态)在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThCreateInstance(ActivationContext activationContext) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThCreateInstance(ActivationContext activationContext) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 System.Threading.ThSystem.Threading.Th 处的 ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)System.Threading.Th 处的 ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
readHelper.ThreadStart() 内部异常:
我尝试将 System.ComponentModel.DataAnnotations 添加到 APTCA,但没有成功:(
我更改了我的应用程序以完全信任运行,但没有成功:(
任何想法?