Microsoft 翻译 - 找不到类型或命名空间名称“DataContract”
Posted
技术标签:
【中文标题】Microsoft 翻译 - 找不到类型或命名空间名称“DataContract”【英文标题】:Microsoft Translate - The type or namespace name 'DataContract' could not be found 【发布时间】:2012-11-01 05:58:04 【问题描述】:我正在尝试使用 Microsoft Translate API 为 Sharepoint Web 部件实现 C# 代码,此处提供示例代码。 http://msdn.microsoft.com/en-us/library/ff512421.aspx
我已经设法解决了其他问题,但是当我尝试部署时,我收到了 10 个关于 DataMember 和 DataContract 相关行的错误。我是 .NET 和 C# 的新手,我希望我能在这里得到一些帮助。我已经尝试了几次,虽然我有其他参考问题的股票,但我之前没有收到这个错误。现在我重新创建了,我得到了这个错误。
The type or namespace name 'DataContract' could not be found (are you missing a using directive or an assembly reference?)
这是我的代码。
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Text;
using System.Net;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.Web;
using System.Media;
using Microsoft.SharePoint;
using System.Data.SqlClient;
namespace MyTranslatorTool.MyTranslator
public partial class MyTranslatorUserControl : UserControl
protected void Page_Load(object sender, EventArgs e)
AdmAccessToken admToken;
string headerValue;
//Get Client Id and Client Secret from https://datamarket.azure.com/developer/applications/
//Refer obtaining AccessToken (http://msdn.microsoft.com/en-us/library/hh454950.aspx)
AdmAuthentication admAuth = new AdmAuthentication("clientid", "gpOGezhz/1dX6hgR6QZhG2j0Z45vw4HlnMWOwr2gNeA+");
try
admToken = admAuth.GetAccessToken();
// Create a header with the access_token property of the returned token
headerValue = "Bearer " + admToken.access_token;
TranslateMethod(headerValue);
catch (WebException er)
ProcessWebException(er);
Console.WriteLine("Press any key to continue...");
Console.ReadKey(true);
catch (Exception ex)
Console.WriteLine(ex.Message);
Console.WriteLine("Press any key to continue...");
Console.ReadKey(true);
private static void TranslateMethod(string authToken)
//original text = text
//translated text = translation
//original language = from
//destinating language = to
string text = "Use pixels to express measurements for padding and margins.";
string from = "en";
string to = "de";
string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + System.Web.HttpUtility.UrlEncode(text) + "&from=" + from + "&to=" + to;
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Headers.Add("Authorization", authToken);
WebResponse response = null;
try
response = httpWebRequest.GetResponse();
using (Stream stream = response.GetResponseStream())
//translated text
System.Runtime.Serialization.DataContractSerializer dcs = new System.Runtime.Serialization.DataContractSerializer(Type.GetType("System.String"));
string translation = (string)dcs.ReadObject(stream);
Console.WriteLine("Translation for source text '0' from 1 to 2 is", text, "en", "de");
Console.WriteLine(translation);
//push to view
//alpha.Text = translation;
Console.WriteLine("Press any key to continue...");
Console.ReadKey(true);
catch
throw;
finally
if (response != null)
response.Close();
response = null;
private static void ProcessWebException(WebException e)
Console.WriteLine("0", e.ToString());
// Obtain detailed error information
string strResponse = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)e.Response)
using (Stream responseStream = response.GetResponseStream())
using (StreamReader sr = new StreamReader(responseStream, System.Text.Encoding.ASCII))
strResponse = sr.ReadToEnd();
Console.WriteLine("Http status code=0, error message=1", e.Status, strResponse);
[DataContract]
public class AdmAccessToken
[DataMember]
public string access_token get; set;
[DataMember]
public string token_type get; set;
[DataMember]
public string expires_in get; set;
[DataMember]
public string scope get; set;
public class AdmAuthentication
public static readonly string DatamarketAccessUri = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13";
private string clientId;
private string cientSecret;
private string request;
public AdmAuthentication(string clientId, string clientSecret)
this.clientId = clientId;
this.cientSecret = clientSecret;
//If clientid or client secret has special characters, encode before sending request
this.request = string.Format("grant_type=client_credentials&client_id=0&client_secret=1&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(clientId), HttpUtility.UrlEncode(clientSecret));
public AdmAccessToken GetAccessToken()
return HttpPost(DatamarketAccessUri, this.request);
private AdmAccessToken HttpPost(string DatamarketAccessUri, string requestDetails)
//Prepare OAuth request
WebRequest webRequest = WebRequest.Create(DatamarketAccessUri);
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(requestDetails);
webRequest.ContentLength = bytes.Length;
using (Stream outputStream = webRequest.GetRequestStream())
outputStream.Write(bytes, 0, bytes.Length);
using (WebResponse webResponse = webRequest.GetResponse())
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AdmAccessToken));
//Get deserialized object from JSON stream
AdmAccessToken token = (AdmAccessToken)serializer.ReadObject(webResponse.GetResponseStream());
return token;
【问题讨论】:
【参考方案1】:尝试添加对:System.Runtime.Serialization的引用
【讨论】:
你能帮我解决这个问题吗? ***.com/questions/13350678/…以上是关于Microsoft 翻译 - 找不到类型或命名空间名称“DataContract”的主要内容,如果未能解决你的问题,请参考以下文章
找不到与命名空间 http://schemas.microsoft.com/WebParts/v3/Publishing/runtime 关联的脚本或扩展对象