“System.Web.HttpContext无法序列化,因为它没有无参数构造函数。”

我创建了一个其他网站可以用来在我的数据库中存储错误的Web服务。 然后,他们可以访问我的网站查看他们的错误,搜索错误,过滤错误等。但是,我的Web服务出现以下错误:


System.Web.HttpContext无法序列化,因为它没有无参数构造函数。

描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

exception详细信息:System.InvalidOperationException:System.Web.HttpContext无法序列化,因为它没有无参数构造函数。


Web服务包含以下function:

 [的WebMethod]
 public static void LogError(HttpContext context,Exception exception,string APIKey)
 {
     //记录错误
 }

使用Web服务记录exception的外部站点在global.asax文件中包含以下代码:

 void Application_Error(object sender,EventArgs e){//当发生未处理的错误时运行的代码WebService.Errors.ErrorHandler.LogError(HttpContext.Current,Server.GetLastError(),“NOLDFHOI”);  } 

如何从网站上将HttpContext从他们的网站获取到我的function中?

您无法序列化HttpContext。 您最好的选择是创建一个自定义类来封装您想要从HttpContext中获取的信息并将其传递到WebMethod中。

您需要创建一个可序列化的类,用于保存您希望收集的信息。 然后在该类上创建静态方法,该方法将创建该类的新实例并收集所需的信息。

它将是这个传递给LogError的新类。