Fckeditor XML Request error:internal server error (500) 解决方法小结
(编辑:jimmy 日期: 2024/12/23 浏览:2)
原来一直能用的ecshop后台信息发布里面的fckeditor上传功能,换了个机器后不能用了。以为是文件损坏,上传一边不行。
什么xml错误,还弹出一个大的JavaScript alert警告框,内容就是服务器端错误的500内容
网上搜,又说是配置问题,主题问题,想想都不应该,直接请求
复制代码 代码如下:
filemanager/connectors/php/connector.php
出了服务器的500错误,html文件能访问,txt也行。
后来从根目录开始查,发现到fckeditor目录里面的php文件开始不能访问。
改了fckeditor目录的属性为755,问题解决。
问题二
网上很多人提到,后来发布的FCKeditor2.3以后的版本,要设置fckeditoreditorfilemanagerconnectorsaspx目录下的connector.aspx,和upload.aspx里的加入theme="",但经本人测试,这样还是不行,仔细看提示的错误,原来根本没有那么复杂,其实就是你的上传文件夹设置不对,首先要确认你的文件夹有写入的权限,然后再web.config里面要注意写入路径的设置,~/表示当前站点的根目录,/表现的文件所在电脑的根目录,建议根据你的文件结构,选择第一种设置。
原来是主题惹的祸:
因为ASP.NET2.0新增了Theme功能,所以如果在你的工程中你对Web.config使用到了styleSheetTheme或theme的话那就要再多修改一下。
还是到FCKeditor所在的目录,分别打开editorfilemanageruploadaspxupload.aspx和editorfilemanagerbrowserdefaultconnectorsaspxconnector.aspx两个aspx文件,在page标签中添加Theme=”"或StyleSheetTheme=”"看你在工程使用的是什么就修改什么。修改后如下:
复制代码 代码如下:
<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" Theme="" %>
或
复制代码 代码如下:
<%@ Page language="c#" Inherits="FredCK.FCKeditorV2.Uploader" AutoEventWireup="false" StylesheetTheme="" %>
这样就解决了500的内部错误。
国外网站
After Download You Change This Lines In FileWorkerBase.cs
复制代码 代码如下:
protected string UserFilesDirectory
{
get
{
if ( sUserFilesDirectory == null )
{
// Get the local (server) directory path translation. this.UserFilesPath
sUserFilesDirectory = Server.MapPath(string.Format("{0}{1}","~","/UserFiles/"));
}
return sUserFilesDirectory ;
}
}
Now Buid Project And Change The Refrence To FredCK.FCKeditorV2.dll (Refrence Again)
复制代码 代码如下:
After Building This Changes And Adding Project Go To fckconfig.js and Change like This Lines
var _FileBrowserLanguage = 'aspx' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'aspx' ; // asp | aspx | cfm | lasso | php
问题四:
最近编写一个文章管理系统,参考了网络上的一些经验。感觉重新开始学习网页编程,差距真是太大了。想2000年前后,曾经学习过html、perl、php、asp、JS、VBS,后来还学习过jsp等,数据库用过access、mssql、mysql,后来学过oracle等。如今再拾起来,总是有些似曾相识,但毕竟不是一回事了。
现在开始学习aspx,发现如果想学好一种语言,说起来容易,其实想真正掌握,也绝非易事。如果没有扎实的基础,总会感觉难以得心应手。
文章管理系统中用到了fckeditor上传文件,在本机编译运行还是好好的,可是到了win2003服务器上就不能正常运行了。提示FCKeditor : XML Request error:internal server error (500) 。因为设置成了独立的域控制器,找了半天的资料,按所有的要求做了,足足有四、五天,还是不行。后来没有办法只好安装成独立服务器,一试行了,也可能当时没有弄清。接着按单位的要求加入域,第二天再一试,又不行了,真是无可奈何。
实在没有办法了,只好从头找起。把其中的test.html复制回去,测试结果原来是引用的FredCK.FCKeditorV2.dll出了问题,真是没有想到。提示Util.CreateDirectory()出现错误。找到FredCK.FCKeditorV2.dll的源代码中的Util.cs,发现其中有一段为:
// The "_mkdir" function is used by the "CreateDirectory" method.
[DllImport("msvcrt.dll", SetLastError=true)]
private static extern int _mkdir(string path) ;
由此想到可能是系统的这个msvcrt.dll不一致造成程序调用出错,查看后发现版本确实不一样,服务器是win2003 sp1的,究竟是不是加入域后访问规则的改变,还没有找到是什么原因。
仔细阅读了源代码,把其中涉及到msvcrt.dll的去除不用,替换成Directory.CreateDirectory(),编译后把FredCK.FCKeditorV2.dll复制到文章管理系统的bin目录,运行正常,win2003 sp1中也正常。
源代码中也说明,如果直接使用System.IO.Directory.CreateDirectory()会出现异常提示,不过它当时是使用vs2003开发的,而vs2005中没有出现异常提示,可以正常使用。
由于fckeditor涉及的语言较多,只能先这样修改,凑乎着用吧。
修改后的Util.cs参考源代码:
复制代码 代码如下:
using System ;
using System.Runtime.InteropServices ;
using System.IO ;
using System.Collections ;
namespace FredCK.FCKeditorV2
{
public sealed class Util
{
private Util()
{}
public static DirectoryInfo CreateDirectory( string path )
{
Directory.CreateDirectory(path);
return new DirectoryInfo(path); }
}
}