我正在使用DataContractJsonSerializer并且DataMember名称存在问题.
我创建了一个基类和几个派生类.我需要派生类,因为我有不同的json字符串.我想反序列化json字符串,因此需要不同的数据名称名称.我尝试更改DataMember名称,如下例所示:
基类:
[DataContract]
public abstract class BaseClass
{
[DataMember]
public virtual string FirstMethod { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)
派生类:
[DataContract]
[KnownType(typeof(BaseAccess))]
public class DerivedClass
{
[DataMember(Name="first_method")]
public virtual string FirstMethod { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)
问题是当我使用派生类时,序列化似乎忽略了给定的DataMember名称.因此,当我使用DerivedClass类型反序列化时,序列化似乎是使用名称"FirstMethod"(基类)而不是"first_method"(派生类).是否可以使用派生类的DataMember名称(在我的情况下,它对于几个派生类是不同的).
另一个问题.我发现在基类上添加了KnownType并在派生类上添加的示例.对于我来说,在派生类上执行此操作似乎是逻辑(特别是对于继承问题).什么是正确的?
我不能再从Visual Studio 2010启动我的网站了.
有几天我无法使用F5在Web浏览器中启动我的项目.当我通过键入相同的URL'http ://localhost/Default.aspx ' 直接打开我的Web应用程序时,everthing工作正常.
当我运行项目(F5)时,一个新的webbrowser启动,但几秒钟后它就卡住了,Visual Studio会给出一个错误对话框:
Microsoft Visual Studio
无法启动程序' http://localhost/Default.aspx '.
好
当我在发布模式下运行项目时,它会产生一个额外的错误:
Microsoft Visual Studio
以下模块是在启用优化或没有调试信息的情况下构建的:
C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6552bec6\694bce32\assembly\dl3\8c9bd8d8\fb1d75cb_af26cc01\[name] .Presentation.DLL
要调试此模块,请将其项目构建配置更改为调试模式.要禁止显示此消息,请禁用"如果启动时没有用户代码,则调用警告"选项.
好
我已经修复,删除并重新安装了Visual Studio 2010,我尝试使用不同的浏览器(包括Chrome和Firefox),使用不同的aspnet_regiis.exe选项等.
什么都没有帮助,是的,现在我被困在头上拉头发......
任何人都知道如何解决这个问题?
我试图反序列化我保存到文件的对象(使用二进制格式化程序).无论我尝试什么,我都会得到异常:解析完成之前遇到的End of Stream
我有以下几行代码:
public static T DeserializeFromBinaryFile<T>(string fileName)
{
T instance = default(T);
FileStream fs = new FileStream(fileName, FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter();
instance = (T)formatter.Deserialize(fs);
}
catch{}
finally
{
fs.Close();
}
return instance;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
public static T DeserializeFromBinaryFile<T>(string fileName)
{
T instance = default(T);
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
MemoryStream ms = new MemoryStream();
try
{
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, (int)fs.Length);
ms.Write(bytes, 0, (int)fs.Length);
ms.Position = 0;
ms.Seek(0, SeekOrigin.Begin); …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个javascript库,我可以加密客户端,并使用C#解密服务器端.
这样的图书馆存在吗?有没有例子如何在C#服务器端加密客户端和如何解密?
编辑 - 额外的解释
在具有低阈值的站点上,要求是http.一些数据(litte)将被发送到服务器.想法是用户提供一些数据(也是一个密钥 - 不会被发送),数据将被加密并发送到服务器(密钥在服务器端也是已知的).数据不是真正敏感的,偏好不是以纯文本形式发送...
我试过http://code.google.com/p/crypto-js/ AES.但我无法弄清楚这些数据是如何被加密的(客户端,utf 8或......等).如果我加密一些数据客户端(使用相同的iv和私钥等)并在C#中执行相同操作,我会得到不同的字符串.
c# ×2
binary ×1
datamember ×1
debugging ×1
encryption ×1
exception ×1
formatter ×1
javascript ×1
overriding ×1
release ×1
wcf ×1