解决 Implement IMultiInstancePlugin after Nuget reinstall
Resolving Implement IMultiInstancePlugin after Nuget reinstall
使用 .Net 4.6.2。
我从源代码管理加载了一个旧项目以添加新的图像页面。
图片页面都保存在各自的文件夹里,所以我干脆把"folder2015"的功能复制到"folder2016"和运行一样的代码:
private void DisplayImages(string path) {
var dir = new DirectoryInfo(path);
var files = dir.GetFiles("DSC*.JPG");
var sb = new StringBuilder("<table>");
var td_counter = 0;
for (int n = 0; n < files.Length; n++) {
var file = files[n];
var ext = file.Extension.ToLower();
var lc_name = file.Name.Substring(0, file.Name.ToLower().IndexOf(ext));
if (lc_name.IndexOf("_s") == -1) {
var thumb = String.Format("{0}_s{1}.ashx?w=240&h=240", lc_name, ext);
if (td_counter == 0) {
sb.Append("<tr>");
}
sb.Append(String.Format("<td><a href=\"{0}\" target=\"_blank\"><img src=\"{1}\"></a></td>", file.Name, thumb));
td_counter++;
if (td_counter == 3) {
td_counter = 0;
sb.AppendLine("</tr>");
}
}
}
sb.AppendLine("</table>");
divDefault.InnerHtml = sb.ToString();
}
每个 DSC*.JPG
图像都在 6-8 MB 之间。
页面会加载,但所有图像都不可用。
我在 Web.config 文件中看到 ImageResizer
个条目,因此决定在这台电脑上需要 运行 的包。
我进入包管理器控制台以获取最新的:
PM> Install-Package ImageResizer.MvcWebConfig
PM> Install-Package ImageResizer.Plugins.DiskCache
PM> Install-Package ImageResizer.Plugins.PrettyGifs
我还是没有看到图片,所以我调试了一下,发现我需要查看resizer.debug.ashx文件。
我看到的第一个错误是:
Plugins(ConfigurationError): An instance of the specified plugin (ImageResizer.Plugins.Basic.MvcRoutingShimPlugin) has already been added. Implement IMultiInstancePlugin if the plugin supports multiple instances.
完整的 resizer.debug.ashx 文件在粘贴站:http://pastebin.com/iVT6QJS5
如何删除这些重复项?我需要告诉 Nuget 先卸载吗?我是否需要在 Nuget 删除和 Nuget 安装之间重新启动或重新启动 VS?
删除 <add name="MvcRoutingShim" />
,因为它已经默认加载 - 您的配置正在尝试加载另一个实例。
不过,DiskCache 和 PrettyGifs 的安装包似乎无法正常工作,因为找不到这些 .dll
使用 .Net 4.6.2。
我从源代码管理加载了一个旧项目以添加新的图像页面。
图片页面都保存在各自的文件夹里,所以我干脆把"folder2015"的功能复制到"folder2016"和运行一样的代码:
private void DisplayImages(string path) {
var dir = new DirectoryInfo(path);
var files = dir.GetFiles("DSC*.JPG");
var sb = new StringBuilder("<table>");
var td_counter = 0;
for (int n = 0; n < files.Length; n++) {
var file = files[n];
var ext = file.Extension.ToLower();
var lc_name = file.Name.Substring(0, file.Name.ToLower().IndexOf(ext));
if (lc_name.IndexOf("_s") == -1) {
var thumb = String.Format("{0}_s{1}.ashx?w=240&h=240", lc_name, ext);
if (td_counter == 0) {
sb.Append("<tr>");
}
sb.Append(String.Format("<td><a href=\"{0}\" target=\"_blank\"><img src=\"{1}\"></a></td>", file.Name, thumb));
td_counter++;
if (td_counter == 3) {
td_counter = 0;
sb.AppendLine("</tr>");
}
}
}
sb.AppendLine("</table>");
divDefault.InnerHtml = sb.ToString();
}
每个 DSC*.JPG
图像都在 6-8 MB 之间。
页面会加载,但所有图像都不可用。
我在 Web.config 文件中看到 ImageResizer
个条目,因此决定在这台电脑上需要 运行 的包。
我进入包管理器控制台以获取最新的:
PM> Install-Package ImageResizer.MvcWebConfig
PM> Install-Package ImageResizer.Plugins.DiskCache
PM> Install-Package ImageResizer.Plugins.PrettyGifs
我还是没有看到图片,所以我调试了一下,发现我需要查看resizer.debug.ashx文件。
我看到的第一个错误是:
Plugins(ConfigurationError): An instance of the specified plugin (ImageResizer.Plugins.Basic.MvcRoutingShimPlugin) has already been added. Implement IMultiInstancePlugin if the plugin supports multiple instances.
完整的 resizer.debug.ashx 文件在粘贴站:http://pastebin.com/iVT6QJS5
如何删除这些重复项?我需要告诉 Nuget 先卸载吗?我是否需要在 Nuget 删除和 Nuget 安装之间重新启动或重新启动 VS?
删除 <add name="MvcRoutingShim" />
,因为它已经默认加载 - 您的配置正在尝试加载另一个实例。
不过,DiskCache 和 PrettyGifs 的安装包似乎无法正常工作,因为找不到这些 .dll