安装在IIS子应用程序上时,CKFinder未使用自定义配置的连接器

时间:2016-05-27 17:08:49

标签: asp.net webforms ckeditor ckfinder

我在CMS中使用CKFinder 3.3,该CMS在主网站(/__admin拥有自己的应用程序)的单独ASP .Net应用程序下运行。该网站是一个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 Startup类从代码配置的。当我尝试(Map(route, connectorSetup))时,我得到了相同的结果。

作为临时修复,我在网站根目录中添加了以下重写规则。

<rule name="connector">
          <match url="^ckfinder/connector"/>
          <action type="Rewrite" url="/__admin/connector"/>
</rule>

编辑:

我改变了设置连接器的方式。我现在通过Startup类进行操作,这样我就可以控制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" />

the issue in its action

1 个答案:

答案 0 :(得分:3)

您可以告诉javascript客户端在CKFinderScripts/config.js文件中使用自定义连接器路径:

config.connectorPath = '/__admin/connector';

您可以在documentation

中找到更多配置选项