构建ASP.NET Web应用程序时可能导致错误的原因是什么?

时间:2014-07-18 16:55:08

标签: c# asp.net visual-studio-2010

在我构建解决方案时,它显示以下错误:

  

'System.Web.HttpRequest'不包含'RequestContext'的定义,并且没有可以找到接受类型'System.Web.HttpRequest'的第一个参数的扩展方法'RequestContext'(你是否缺少using指令或汇编参考?)

我错过了什么dll或引用!

代码:

 public void ProcessRequest(HttpContext context)
    {
        try
        {
            HttpRequest request = context.Request;
            string methodName = "";
            if (request.RequestContext.RouteData.Values["methodName"] != null)
            {
                methodName = request.RequestContext.RouteData.Values["methodName"].ToString();
            }
            else
            {
                methodName = request.RawUrl.Substring(request.RawUrl.LastIndexOf("/") + 1);
            }

            //if form post was made way to get values
            //context.Request.Form["firstName"]; //parameter key
            string json = new System.IO.StreamReader(context.Request.InputStream).ReadToEnd();
            JavaScriptSerializer jss = new JavaScriptSerializer();
            ServiceProcesser process = new ServiceProcesser(typeof(AspxCommerce.AdminNotification.AdminNotificationController), json, methodName);
            var response = process.Invoke();

            if (response != null)
            {
                context.Response.ContentType = "application/json";
                context.Response.Write(jss.Serialize(new { d = response }));
            }
            else
            {
                context.Response.ContentType = "application/json";
                context.Response.Write(jss.Serialize(new { d = "" }));
            }
        }
        catch (Exception ex)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            context.Response.ContentType = "application/json";
            var resp = new { d = ex.Message.ToString() };
            context.Response.Write(jss.Serialize(resp));
        }
    }

如需完整资源,您可以浏览我的github回购: https://github.com/Milstein/Ratamata

2 个答案:

答案 0 :(得分:3)

直到.NET版本4才引入

HttpRequest.RequestContext,可以在official documentation的“版本信息”部分中看到。

我的猜测是您使用的是.NET 2.0或3.5,因此您无权访问该属性。您可以通过右键点击您的网站项目,从下拉列表中选择属性,然后选中应用标签上的目标框架选项来检查

答案 1 :(得分:0)

我有类似的问题。在我的情况下,这是由于错误的程序集被引用(是的,一个愚蠢的错误......)。 这是*C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Http.dll*

然后我使用安装包Microsoft.AspNet.WebApi.Core 命令安装 Microsoft.AspNet.WebApi.Core 包。

然后它会引用*~\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll*