[英]DotVVM. System.IO.FileNotFoundException Microsoft.Cloud.Monitoring.UsageCounters.dll
我正在嘗試連接 DotVVM 以將應用程序遷移到網絡核心。 當我嘗試打開一個簡單的 web 頁面時,出現錯誤。
Error in Dotvvm Application:
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Cloud.Monitoring.UsageCounters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.Cloud.Monitoring.UsageCounters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at DotVVM.Framework.Compilation.ControlTree.DefaultControlResolver.<>c.<InvokeStaticConstructorsOnAllControls>b__4_7(AssemblyName an)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at DotVVM.Framework.Utils.FunctionalExtensions.<SelectRecursively>d__8`1.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.<DistinctIterator>d__64`1.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__59`1.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__17`2.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at DotVVM.Framework.Compilation.ControlTree.DefaultControlResolver.InvokeStaticConstructorsOnAllControls()
at DotVVM.Framework.Compilation.ControlTree.DefaultControlResolver..ctor(DotvvmMarkupConfiguration configuration, IControlBuilderFactory controlBuilderFactory)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite.Invoke(ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite.Invoke(ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite.Invoke(ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.ScopedCallSite.Invoke(ServiceProvider provider)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at DotVVM.Framework.Compilation.DefaultControlBuilderFactory.CreateControlBuilder(MarkupFile file)
at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
at DotVVM.Framework.Runtime.DefaultDotvvmViewBuilder.BuildView(IDotvvmRequestContext context)
at DotVVM.Framework.Hosting.DotvvmPresenter.<ProcessRequestCore>d__26.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at DotVVM.Framework.Hosting.DotvvmPresenter.<ProcessRequest>d__25.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at DotVVM.Framework.Hosting.Middlewares.DotvvmRoutingMiddleware.<Handle>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at DotVVM.Framework.Hosting.Middlewares.DotvvmRoutingMiddleware.<Handle>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at DotVVM.Framework.Hosting.DotvvmMiddleware.<Invoke>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at DotVVM.Framework.Hosting.Middlewares.DotvvmErrorPageMiddleware.<Invoke>d__5.MoveNext()
我搜索了所有庫,發現庫“Microsoft.ApplicationServer.Caching.Server.dll”指的是“Microsoft.Cloud.Monitoring.UsageCounters.dll”。 這是唯一的鏈接。 庫“Microsoft.ApplicationServer.Caching.Server.dll”包含在應用程序“AppFabric 1.1 for Windows Server”中。 我還不能放棄“Windows 服務器的 AppFabric 1.1”,因為它依賴於 SharePoint。
我請求幫助以解決錯誤。 Microsoft library.ApplicationServer.Caching.Server.dll 我在互聯網上找不到它來檢查它是否可以使用它。
以防萬一,我附上了測試頁的內容。
DotvvmStartup.cs
public class DotvvmStartup : IDotvvmStartup, IDotvvmServiceConfigurator
{
public void Configure(DotvvmConfiguration config, string applicationPath)
{
config.Debug = true;
config.AllowBindingDebugging = true;
ConfigureRoutes(config, applicationPath);
ConfigureControls(config, applicationPath);
ConfigureResources(config, applicationPath);
}
private void ConfigureRoutes(DotvvmConfiguration config, string applicationPath)
{
config.RouteTable.Add("FieldEdit2", "FieldEdit2", "FieldEdit2.dothtml");
config.RouteTable.Add("FieldEdit", "", "FieldEdit2.dothtml");
}
private void ConfigureControls(DotvvmConfiguration config, string applicationPath)
{
}
private void ConfigureResources(DotvvmConfiguration config, string applicationPath)
{
}
public void ConfigureServices(IDotvvmServiceCollection options)
{
options.AddDefaultTempStorages("Temp");
}
}
FieldEdit2.dothtml
@viewModel WSSC.V4.SYS.DBFramework.DotVVMCustom.FieldEditViewModel,WSSC.V4.SYS.DBFramework
@masterPage Site.dotmaster
<dot:Content ContentPlaceHolderID="MainContent">
<h2>{{value: Title}}.</h2>
<h3>Your application description page.</h3>
<p>Use this area to provide additional information.</p>
</dot:Content>
FieldEditViewModel.cs
public class FieldEditViewModel : SiteViewModel
{
public FieldEditViewModel()
{
}
public override string Title => "TestPage";
}
站點視圖模型.cs
public abstract class SiteViewModel : DotvvmViewModelBase
{
public abstract string Title { get; }
}
啟動.cs
[assembly: OwinStartup(typeof(WSSC.V4.SYS.DBFramework.DotVVMCustom.Startup))]
namespace WSSC.V4.SYS.DBFramework.DotVVMCustom
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseDotVVM<DotvvmStartup>(HostingEnvironment.ApplicationPhysicalPath);
}
}
}
Web.config
<?xml version="1.0" encoding="utf-8"?>
<!-- For more information on how to configure your ASP.NET application, please visit https://go.microsoft.com/fwlink/?LinkId=169433 -->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.7.2"/>
<httpRuntime targetFramework="4.7.2"/>
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f"/>
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.2.2.0" newVersion="1.2.2.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.4.2.0" newVersion="1.4.2.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<appSettings>
<add key="owin:appStartup" value="WSSC.V4.SYS.DBFramework.DotVVMCustom.Startup,WSSC.V4.SYS.DBFramework,Version=4.0.0.0,Culture=neutral,PublicKeyToken=9f4da00116c38ec5"/>
</appSettings>
<system.codedom>
<compilers>
</compilers>
</system.codedom>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
包.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Antlr" version="3.5.0.2" targetFramework="net472"/>
<package id="Ben.Demystifier" version="0.1.0" targetFramework="net472"/>
<package id="bootstrap" version="3.4.1" targetFramework="net472"/>
<package id="DotVVM" version="2.2.0.2" targetFramework="net472"/>
<package id="DotVVM.Core" version="2.2.0.2" targetFramework="net472"/>
<package id="DotVVM.Owin" version="2.2.0.2" targetFramework="net472"/>
<package id="EntityFramework" version="6.0.0" targetFramework="net472"/>
<package id="jQuery" version="3.3.1" targetFramework="net472"/>
<package id="Microsoft.CodeAnalysis.Analyzers" version="1.0.0" targetFramework="net472"/>
<package id="Microsoft.CodeAnalysis.Common" version="1.0.0" targetFramework="net472"/>
<package id="Microsoft.CodeAnalysis.CSharp" version="1.0.0" targetFramework="net472"/>
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="3.6.0" targetFramework="net472"/>
<package id="Microsoft.Extensions.DependencyInjection" version="1.0.0" targetFramework="net472"/>
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.0.0" targetFramework="net472"/>
<package id="Microsoft.Extensions.Options" version="1.0.0" targetFramework="net472"/>
<package id="Microsoft.Extensions.Primitives" version="1.0.0" targetFramework="net472"/>
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net472"/>
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net472"/>
<package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net472"/>
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net472"/>
<package id="Owin" version="1.0" targetFramework="net472"/>
<package id="System.Collections" version="4.0.11" targetFramework="net472"/>
<package id="System.Collections.Concurrent" version="4.0.12" targetFramework="net472"/>
<package id="System.Collections.Immutable" version="1.4.0" targetFramework="net472"/>
<package id="System.ComponentModel" version="4.0.1" targetFramework="net472"/>
<package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net472"/>
<package id="System.Globalization" version="4.0.11" targetFramework="net472"/>
<package id="System.Linq" version="4.1.0" targetFramework="net472"/>
<package id="System.Linq.Expressions" version="4.1.0" targetFramework="net472"/>
<package id="System.Reflection" version="4.1.0" targetFramework="net472"/>
<package id="System.Reflection.Metadata" version="1.5.0" targetFramework="net472"/>
<package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="net472"/>
<package id="System.Runtime" version="4.1.0" targetFramework="net472"/>
<package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net472"/>
<package id="System.Threading" version="4.0.11" targetFramework="net472"/>
<package id="System.Threading.Tasks" version="4.0.11" targetFramework="net472"/>
<package id="System.ValueTuple" version="4.4.0" targetFramework="net472"/>
</packages>
發生該錯誤是因為 DotVVM 嘗試反身調用所有類型的 static 構造函數。
解決方案
config.ExperimentalFeatures.ExplicitAssemblyLoading.Enabled = true;
信息來源https://gitter.im/riganti/dotvvm?at=5f0b4e5b7a4e99049e07ca51
例子
public class DotvvmStartup : IDotvvmStartup, IDotvvmServiceConfigurator
{
public void Configure(DotvvmConfiguration config, string applicationPath)
{
config.ExperimentalFeatures.ExplicitAssemblyLoading.Enabled = true;
config.Debug = true;
config.AllowBindingDebugging = true;
ConfigureRoutes(config, applicationPath);
ConfigureControls(config, applicationPath);
ConfigureResources(config, applicationPath);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.