安装在 IIS 子应用程序上时,CKFinder 未使用自定义配置的连接器
CKFinder is not using the custom configured connector when installed on an IIS sub-application
我在 CMS 中使用 CKFinder 3.3,该 CMS 运行 在主网站的单独 ASP .Net 应用程序下(/__admin
有自己的应用程序)。该网站是一个 WebForms 应用程序。
问题是 CKFinder 连接器指向 /ckfinder/connector
而不是我设置的。显然我收到 IIS 404 响应,因为此路径未配置为根应用程序中的任何内容。
web.config
<appSettings>
<add key="ckfinderRoute" value="/connector" />
和 ckeditor 的用法类似
CKEDITOR.replace('ctl00_cphMain_fvItem_tbContent_Input',
{
filebrowserBrowseUrl: '/__admin/CKFinderScripts/ckfinder.html?=635999758837233543',
filebrowserImageBrowseUrl: '/__admin/CKFinderScripts/ckfinder.html?type=Images&a=635999758837233543',
filebrowserUploadUrl: '/__admin/connector?command=QuickUpload&type=Files',
filebrowserImageUploadUrl: '/__admin/connector?command=QuickUpload&type=Images'
});
CKEDITOR.timestamp='635999758837233543';
当 运行 在 Visual Studio 的主机 (Ctrl + F5) 下时,相同的设置工作正常。
值得一提的是,在 MVC 应用程序中,使用相同的设置,它工作正常。
CKFinder 是通过 web.config 中它自己的部分配置的,而不是通过 OWIN 启动 class 从代码中配置的。当我尝试这样做时 (Map(route, connectorSetup)
) 我得到了相同的结果。
作为临时修复,我在网站根目录中添加了以下重写规则。
<rule name="connector">
<match url="^ckfinder/connector"/>
<action type="Rewrite" url="/__admin/connector"/>
</rule>
编辑:
我更改了连接器的设置方式。我现在通过 Startup class 进行操作,因此我可以控制 ckfinderRoute 的设置方式。看起来像
public void Configuration(IAppBuilder builder)
{
LoggerManager.LoggerAdapterFactory = new NLogLoggerAdapterFactory();
RegisterFileSystems();
var route = ConfigurationManager.AppSettings["ckfinderRoute"];
builder.Map(route, SetupConnector);
}
SetupConnector 方法正在从 web.config 加载设置并添加身份验证。我认为在这里显示代码是无关紧要的。
我也列出相关包
<package id="CKSource.CKFinder" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Config" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Core" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Host.Owin" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.KeyValue.EntityFramework" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Logs.NLog" version="3.3.0" targetFramework="net461" />
<package id="CKSource.FileSystem" version="1.0.0" targetFramework="net461" />
<package id="CKSource.FileSystem.Amazon" version="1.0.0" targetFramework="net461" />
<package id="CKSource.FileSystem.Local" version="1.0.0" targetFramework="net461" />
您可以告诉 javascript 客户端在您的 CKFinderScripts/config.js
文件中使用自定义连接器路径:
config.connectorPath = '/__admin/connector';
您可以在 documentation 中找到更多配置选项。
我在 CMS 中使用 CKFinder 3.3,该 CMS 运行 在主网站的单独 ASP .Net 应用程序下(/__admin
有自己的应用程序)。该网站是一个 WebForms 应用程序。
问题是 CKFinder 连接器指向 /ckfinder/connector
而不是我设置的。显然我收到 IIS 404 响应,因为此路径未配置为根应用程序中的任何内容。
web.config
<appSettings>
<add key="ckfinderRoute" value="/connector" />
和 ckeditor 的用法类似
CKEDITOR.replace('ctl00_cphMain_fvItem_tbContent_Input',
{
filebrowserBrowseUrl: '/__admin/CKFinderScripts/ckfinder.html?=635999758837233543',
filebrowserImageBrowseUrl: '/__admin/CKFinderScripts/ckfinder.html?type=Images&a=635999758837233543',
filebrowserUploadUrl: '/__admin/connector?command=QuickUpload&type=Files',
filebrowserImageUploadUrl: '/__admin/connector?command=QuickUpload&type=Images'
});
CKEDITOR.timestamp='635999758837233543';
当 运行 在 Visual Studio 的主机 (Ctrl + F5) 下时,相同的设置工作正常。
值得一提的是,在 MVC 应用程序中,使用相同的设置,它工作正常。
CKFinder 是通过 web.config 中它自己的部分配置的,而不是通过 OWIN 启动 class 从代码中配置的。当我尝试这样做时 (Map(route, connectorSetup)
) 我得到了相同的结果。
作为临时修复,我在网站根目录中添加了以下重写规则。
<rule name="connector">
<match url="^ckfinder/connector"/>
<action type="Rewrite" url="/__admin/connector"/>
</rule>
编辑:
我更改了连接器的设置方式。我现在通过 Startup class 进行操作,因此我可以控制 ckfinderRoute 的设置方式。看起来像
public void Configuration(IAppBuilder builder)
{
LoggerManager.LoggerAdapterFactory = new NLogLoggerAdapterFactory();
RegisterFileSystems();
var route = ConfigurationManager.AppSettings["ckfinderRoute"];
builder.Map(route, SetupConnector);
}
SetupConnector 方法正在从 web.config 加载设置并添加身份验证。我认为在这里显示代码是无关紧要的。
我也列出相关包
<package id="CKSource.CKFinder" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Config" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Core" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Host.Owin" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.KeyValue.EntityFramework" version="3.3.0" targetFramework="net461" />
<package id="CKSource.CKFinder.Connector.Logs.NLog" version="3.3.0" targetFramework="net461" />
<package id="CKSource.FileSystem" version="1.0.0" targetFramework="net461" />
<package id="CKSource.FileSystem.Amazon" version="1.0.0" targetFramework="net461" />
<package id="CKSource.FileSystem.Local" version="1.0.0" targetFramework="net461" />
您可以告诉 javascript 客户端在您的 CKFinderScripts/config.js
文件中使用自定义连接器路径:
config.connectorPath = '/__admin/connector';
您可以在 documentation 中找到更多配置选项。