对于video.js动态加载视屏地址的问题感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解videojs动态加载视频,并且为您提供关于.NETCORE动态加载DLL的问题、.net–在运行时
对于video.js 动态加载视屏地址的问题感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解videojs动态加载视频,并且为您提供关于.NET CORE 动态加载 DLL 的问题、.net – 在运行时动态加载程序集依赖项的问题、2.Silverlight动态加载外部XML指定地址的WebService-(动态加载外部XML文件中指定的WebService地址)、android viewPager gridView 动态加载的宝贵知识。
本文目录一览:- video.js 动态加载视屏地址的问题(videojs动态加载视频)
- .NET CORE 动态加载 DLL 的问题
- .net – 在运行时动态加载程序集依赖项的问题
- 2.Silverlight动态加载外部XML指定地址的WebService-(动态加载外部XML文件中指定的WebService地址)
- android viewPager gridView 动态加载
video.js 动态加载视屏地址的问题(videojs动态加载视频)
在使用 video.js 插件的时候,出现一个问题,页面引入 video.js 后,再用 js 去改变 source 视频源地址的时候,时而报错
- The video could not be loaded,either because the server or network failed or because the format is not supported
出错的原因是可能在切换视频地址之后,播放器没有进行初始化。
解决办法是:在更改视频地址后重新加载播放器就 ok.
var myPlayer = videojs ("video"); // 初始化视频
$("#video_src").attr ("src","视屏地址")
myPlayer.src ("视屏地址"); // 重新初始化视频地址
myPlayer.load ("视屏地址"); // 重新加载
.NET CORE 动态加载 DLL 的问题
有个系统, 需要适应不同类型的数据库(同时只使用其中一种),如果把数据库操作层提取出来,然后针对不同的数据库使用不同的 DLL, 再根据不同的项目使用不同的库, 在以前的 ASP.NET 中, 直接把相关的 DLL 复制到 BIN 目录就可以了, .NET CORE 把 DLL 复制过去,系统不会自动加载, 系统只会自动加载 xx.deps.json 里面相关的程序集。
竟然不能加载 非 xx.deps.json 里定义程的序集, 那么就使用 AssemblyLoadContext 类来加载, 但是 AssemblyLoadContext 类在加载程序集的时候, 也只会加载程序集本身, 程序集所依赖的其他程序集, 也不会自动加载, 我们自己的程序集里肯定是要引用相应的数据库操操作来实现 SQL 功能。
再复杂一点的是, 很多类库,为不同的平台,实现了不同的版本, 如 system.data.odbc 程序集, 我们在引用的时候, 引用的是个编译版本, 编译版本里只有方法名称属性等, 方法里都是抛出异常, 然后还有个运行时, 一般放到 runtimes 目录, 里面有 win, linux, osx, freebsd 这种系统, 正常情况下,.net core 会根据平台运行所有平台自动加载相应的目录里的程序集。
AssemblyLoadContext 类根据目前测试的情况来看, 不会自动加载相应的 DLL, 都需要自己判断去哪个目录加载, 可以通过 System.Runtime.InteropServices.RuntimeInformation 的 IsOSPlatform 方法来判断是哪种类型的操作系统。
使用 AssemblyLoadContext 类加载程序集后, 返回一个 Assembly 对象, 也只能通过 Assembly 对象来获取相应的类型, 还是不能直接使用 Type.GetType (typeName) 的方式来获取。
.net – 在运行时动态加载程序集依赖项的问题
一切正常,插件正确实例化,但现在我遇到了问题.
我现在部署了一个使用其他第三方插件的插件“X”,所以现在我遇到的问题是在运行时找不到“X”所需的这些额外的第三方插件.因此,我的想法是现在添加一个额外的目录“dependencies”,我还部署了所有需要的插件.
所以我的第一个问题:
如何将程序集加载到应用程序域中(假设我知道它们的路径)s.t.它们可以被我的应用程序使用?
我尝试通过做类似的事情来解决这个问题:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender,ResolveEventArgs args) { //find the path to the assembly and then load and return it by //return Assembly.Load("pathToDependencies/FailedAssembly.dll"); }
问题是这个事件处理程序现在被激活,在args变量中有“Presentation.Zune.dll”(我正在使用WPF应用程序).好像那个程序集加载失败但实际问题是另一个dll.
有人可以建议我更好的方法来解决我的问题吗?我希望我能够充分解释我的情况,否则只是要求进一步澄清.
谢谢,
尤里
解决方法
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="plugins;dependencies"/> </assemblyBinding> </runtime> </configuration>
2.Silverlight动态加载外部XML指定地址的WebService-(动态加载外部XML文件中指定的WebService地址)
接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以 此加载这个地址来动态加载WebService呢?这样子就可以避免当WebService地址改变的时候,还要打开XAP包来重新修改 WebService配置的地址了。
答案当然是可以的。在这里,我制作了一个实例。
在前面一节里面,我们讲到了使用WebClient来下载Silverlight程序外部的XML文件内容。在本节中,我们重点需要讲解一下如何使用反射来动态生成WebService代理类。关键代码如下:
- public void InitializeServices(string serviceAddress)
- {
- BasicHttpBinding basicBinding = new BasicHttpBinding();//创建BasicHttpBinding绑定类
- basicBinding.MaxBufferSize = 2147483647;//设置最大缓存字节
- basicBinding.MaxReceivedMessageSize = 2147483647;//设置最大的接受消息缓存字节
- CustomBinding binding = new CustomBinding(basicBinding);
- BindingElement binaryElement = new BinaryMessageEncodingBindingElement();
- EndpointAddress endPoint = new EndpointAddress(serviceAddress);//根据读取的外部XML指定的Webservice地址来实例化终结点地址。
- WebServiceSoapClient _LBControl = new WebServiceSoapClient();//实例化WebService代理类
- _LBControl = (WebServiceSoapClient)Activator.CreateInstance(typeof(WebServiceSoapClient), binding, endPoint);//使用反射来实例化我们需要指定的webService地址
当然以上只是关键性代码,我们在实践中还需要自己写一个WebService做测试,在本实例源代码程序中,我们在SLreadxml.Web项目中新建了一个WebService.asmx页面,此页面写了一个简单的WebService方法:
- [WebMethod]
- public string HelloWorld()
- {
- return "Hello World For TestData";
- }
然后我们右键点击SLreadxml项目名然后选择“添加服务引用”,在弹出的窗口中,我填入SLreadxml.Web中 WebService.asmx页面的http地址。(注意这里的Http以你自己的WebService地址为准,你可以重新架设一个网站目录或者IP 上。)http://localhost:1239/webService.asmx,然后点击“前进”,在这里创建好这个服务引用的代理类。并且命名此命名空间名为LBControl,然后我们需要在App.xaml.cs文件中引入以下命名空间:
- using System.IO;
- using System.Xml;
- using System.Windows.browser;
- using System.ServiceModel;
- using System.ServiceModel.Channels;
- using SLreadxml.LBControl;
当然System.ServiceModel域名空间还需要单独引用其DLL文件。在SLreadxml右键--“添加引用”。
另外想要WebService能够被访问到,还需要添加clientaccesspolicy.xml文件,此文件叙述了你可以安全的引用某一个网 站下的WebService.类似于安全许可吧。值得注意的是这个文件必须放在你的网站的根目录下面,那么你的这个WebService文件才能够被访问 到。不是虚拟目录的根目录,而是你网站的根目录。切记。
clientaccesspolicy.xml源代码:
- <?xml version="1.0" encoding="utf-8" ?>
- <access-policy>
- <cross-domain-access>
- <policy>
- <allow-from http-request-headers="*">
- <domain uri="*"/>
- </allow-from>
- <grant-to>
- <resource path="/" include-subpaths="true"/>
- </grant-to>
- </policy>
- </cross-domain-access>
- </access-policy>
好了。现在基本上已经可以实现动态的访问XML来动态的读取WebService地址。而不用每次都要去XAP包里面修改WebService地址了。那样太麻烦了。