我在使用带有C#的asp.net.我在服务器[已发布]上部署了一个应用程序,现在我想查看该网站的代码,据我所知,我可以阅读程序集以查看代码.
请让我知道如何实现它.
提前致谢.
我有一个用C Sharp开发的dll.如何使其在其他语言中可用,例如PHP或Delphi?
我还没有找到解决这个问题的方法.这样做有什么简单的方法吗?
我曾经认为一个程序集只能有一个main()方法,直到我在哥本哈根的微软办公室的视频讲座中看到Jon Skeet的MiscUtil.
所以,我写了这个有两个main()方法的小应用程序,如下所示:
namespace ManyMains
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Console.ReadKey();
}
}
class YetAnotherProgram
{
static void Main()
{
Console.WriteLine("Yet another program.");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在Visual Studio中设置了StartUp对象并且它有效.好吧,没有理由感到苦恼.然后,我想看看这个信息存储在程序集中的确切位置,所以我在反射器中打开了编译后的二进制文件,并且完全看不到这种效果的元数据.
我想知道是否将这种信息写入清单或PE图像的某些COFF标题中,这些标题在反汇编程序中无法看到但可以在十六进制编辑器中看到?
自从上一周以来,我一直在努力解决这个问题.我混淆了我的应用程序的exe.我们的应用程序是在线Web应用程序的离线工具 客户端将安装此应用程序并连接到Internet,应用程序将下载相关信息并存储在客户端计算机上的xml文件中以供进一步显示.出于安全考虑,我们正在加密这些xml文件.不幸的是,我们在exe内部有一个方法GetCryptXML,它将在客户机上读取加密的settings.xml并在解密后返回它.此setting.xml也包含其他xml的加密密钥.
我面临的问题是,即使在混淆之后,人也可以通过传递混淆的名称来调用GetCryptXML方法.
有什么方法可以解决这个问题吗?
这是我解决问题的想法,但我不确定如何实施.
我的想法:只有通过使用InvokeMember()函数进行反射才能调用我的函数.在可以调用此函数之前,他/她需要使用此函数来加载程序集.
Assembly.LoadFrom("myapplication.exe")
Run Code Online (Sandbox Code Playgroud)
如果myapplication.exe中的代码可以识别哪个应用程序试图加载我,那么我们可以限制它们加载,如果它不是应用程序.我不知道怎么解决.
任何帮助是极大的赞赏.
谢谢.
我正在实例化一个对象,并使用SOAP数据填充它.
这曾经很好用.
但是,在给程序集强名后,我收到以下错误:

重要的是:
应用程序已停止工作
问题签名:System.Runtime.Serialization.Formatters.Soap
调试器向我显示了一个System.Runtime.Serialization.SerializationException,具有以下详细信息.注意序列化解析器如何抱怨'没有与Xml键关联的程序集'

完整的错误描述是:
解析错误,没有与XML密钥A1相关联的组装:http://schemas.microsoft.com/clr/nsassem/MyProject/MyProject%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull的MainForm
这是StackTrace
在System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessGetType(String value,String xmlKey,String&assemblyString)
在System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessType(ParseRecord pr,ParseRecord objectPr)
在System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessAttributes(ParseRecord pr,ParseRecord objectPr)
在System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
在System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
在System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
在System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler处理程序,ISerParser serParser)
在System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream,HeaderHandler handler)
在System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream)
在C:\ MyProject\Program.cs中的MyProject.Program.Main():第35行
在System.AppDomain._nExecuteAssembly(RuntimeAssembly程序集,String [] args)
在System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean ignoreSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)
在System.Threading.ThreadHelper.ThreadStart()
我取消选中"签署程序集",重新构建解决方案,并且像魔法一样,一切都恢复正常 - 所以,我知道一个错误的SOAP文件不是根本原因.事实上,如果我不得不猜测,我会说强大的程序集名称"令人困惑"的SOAP解串器.
我该如何解决这个问题?
"任何CPU"如何在低级别实施?
是不是有两种格式:PE32和PE64?Windows x86和x64都可以运行32位.但是,它不是通过在32位内部使用64位可执行文件并在内存中运行它来实现的,因为这个过程将具有与启动器不同的ID.那他们是怎么做到的?
我正在编写一个用于动态加载插件程序集的CMS插件Assembly.load.
注意:由于与进入无关的原因,前端静态加载程序集,而管理环境动态加载它.
我的插件有自己的xml配置文件,在第一次使用插件类时加载.使用配置文件反序列化为对象对象XmlSerializer.
当我通过前端静态加载程序集时,这种反序列化工作正常,但是当管理员尝试动态加载它时,我NullReferenceException从读者那里得到了一个.
我已经尝试使用Sgen预生成序列化程序集并将其添加到管理环境的"Bin"目录中,但这似乎没有任何效果.
堆栈跟踪:
[NullReferenceException: Object reference not set to an instance of an object.]
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccessibilityConfig..cctor() +1156
[TypeInitializationException: The type initializer for 'Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccessibilityConfig' threw an exception.]
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccessibilityConfig..ctor() +0
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializerContract.get_Reader() +44
System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping, XmlReader xmlReader, XmlDeserializationEvents events, String encodingStyle) +69
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) +101
[InvalidOperationException: There is an error in XML document (0, 0).]
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) +613
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) +30
CoA.WebUI.Controls.AccessibilityObjects.AccessibilityConfigBase`1.Deserialize(String xml) +196
CoA.WebUI.Controls.AccessibilityObjects.AccessibilityConfigBase`1.LoadFromFile(String fileName) +256 …Run Code Online (Sandbox Code Playgroud) 我开发了一个自定义应用程序,它能够使用CRM Web服务并在自定义.NET页面中执行CRM中的Windows Live Id身份验证,创建,读取和更新操作.当我在Visual Studio 2010中调试应用程序时,它运行得非常好,但是当我部署相同的应用程序并尝试进行身份验证时,它显示以下错误:
无法加载文件或程序集"Microsoft.IdentityModel,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其依赖项之一.该系统找不到指定的文件.
我无法理解问题发生在哪里.
assemblies ×10
c# ×8
asp.net ×2
reflection ×2
.net ×1
azure ×1
crash ×1
delphi ×1
dll ×1
entry-point ×1
obfuscation ×1
php ×1
security ×1
soap ×1
web-services ×1
wif ×1
winapi ×1