The type or namespace name 'DataAnnotations

2019-07-08 08:58发布

问题:

Before anyone closes this as duplicate - please note its not a linq or other datasources issue and i have looked at other stackoverflow posts and none are same.

Here is my problem:

Its extremely simple app ASP.net with C# code behind no fancy stuff plain simple as you can see from code below:

default.aspx code

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%=returVar%>

Default.apsx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    public string returVar;
    protected void Page_Load(object sender, EventArgs e)
    {
        string n = String.Format("{0}", Request.Form["test"]);
        //below we will place the code for ODP.net once the DB connectivity is resolved
        if (n.Length == 16)
        {
            returVar = "Found";
        }
        else
        {
            returVar = "Not found";
        }
    }//Page_Load
}

and finally web.config

<?xml version="1.0"?>
<configuration>
    <system.web>
        <compilation debug="false"/>
    </system.web>
</configuration>

My dev machine is: win 32 xp visual studio 2010 and Server running is Win 64bit 2008 R2 and IIS7.5.

so why is this error occuring when i run this code on my desktop it works like a charm with http through firefox as below:

http://localhost:3117/Default.aspx?test=0998989765432345

exact same code fails with attached screen shot, can someone tell me why please propose the solution. I tried including ALL of my DLL from solution explorer to release i.e. Solution Explorer > References > system.core, system.data etc... > all set for copy local = true.

still no luck.

Please note i cant install any extra components on the server and what ever i have to deploy has to be part of application.

回答1:

Easiest solution if anyone else bumps into this situation, here is how i achieved result

open Visual studio 2010 once its loaded

open explorer -> goto > C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0

copy the required System.ComponentModel.DataAnnotations.dll into your project "References" folder select that reference and under properties set "copy local" to true and once you publish it will be in your bin folder and wont impact at all on any server be it x32 or x64.

hope it helps anyone else.



回答2:

Did you only install the client profile version of .NET 4.0 perhaps? You probably need the full version.