我有一个独特的问题.我正在将一个dll注册为SQL Server数据库中的一个程序集,该数据库接收一个SQLXml变量以及两个字符串,并将数据序列化为JSON格式.
作为参考,这里是方法调用:
[SqlProcedure]
public static void Receipt(SqlString initiatorPassword,
SqlString initiatorId,
SqlXml XMLOut,
out SqlString strMessge)
Run Code Online (Sandbox Code Playgroud)
如果这是任何其他类型的应用程序,我会使用Newtonsoft.Json或Jayrock这个应用程序.通常我会按照这里给出的答案做一些类似的事情:
XmlReader r = (XmlReader)XmlOut.CreateReader();
XmlDocument doc = new XmlDocument();
doc.load(r);
Run Code Online (Sandbox Code Playgroud)
但是,由于我使用的是SQLClr,因此有一定的规则.其中之一就是.Load()不能使用任何其他继承的方法. 我认为.Net框架说得最好:
System.InvalidOperationException:无法加载动态生成的序列化程序集.在某些托管环境中,组件加载功能受到限制,请考虑使用预生成的序列化程序.有关更多信息,请参阅内部异常.---> System.IO.FileLoadException:
主机已禁用LoadFrom(),LoadFile(),Load(byte [])和LoadModule().
我无论如何都不能流利使用SqlClr,但是如果我正确地理解了这个博客,这是由于SqlCLR的规则不允许.Load()和继承的方法而没有签名并具有强名称.我的DLL和我正在使用的第三方DLL没有强名称,也不能自己重建和签名.所以,这使我无法在不使用负载的情况下尝试完成此任务(除非有人知道另一种方法可以完成)
我能提出的唯一解决方案是一个非常难看的while循环,它无法正常工作,我得到了一个"Jayrock.Json.JsonException:JSON对象中的JSON成员值必须以其成员名称开头"异常.这是我写的while循环(不是我最好的代码,我知道):
int lastdepth = -1;
Boolean objend = true;
Boolean wt = false;
//Write Member/Object statements for the header omitted
JsonWriter w = new JsonTextWriter()
while (m.Read())
{
if ((lastdepth == -1) && (m.IsStartElement()))
{//Checking for root element
lastdepth = …Run Code Online (Sandbox Code Playgroud) 大家,早安,
我正在开发一个需要升级和重构的旧版 ASP 经典应用程序。需要进行的最大改进之一是通过缓存数据库中的结果来加速应用程序。通过将它们缓存到 .dat 文件,我已经能够成功地做到这一点。此应用程序遵循特定路径,因此我在完成处理后一直删除未使用的缓存文件。但是,在应用程序 (PV.asp) 的最终 .asp 页面上,文件在不应该被删除的情况下被删除了。
我的意图是这样的
<input type="button" value="Done" style="width: 56px; height: 40px" onclick="finish()" />
Run Code Online (Sandbox Code Playgroud)
^ 这是“完成”按钮的代码,它调用finish() 函数。下面是:
function finish() {
var size = "<%response.write(size) %>";
if (size == "0") {
var done = confirm("All Items mod, would you like to save?");
if (done == true)
{
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var concode = "<%=Replace(concode, "\", "\\" )%>";
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) …Run Code Online (Sandbox Code Playgroud)