在C#的一个类库项目中写了一个供sql中使用的存储过程:
[SqlProcedure]
public static string GetPartnerList(string logincode)
{
string action = MemberApiUrl("api/Member/GetPartnerList");
NameValueCollection param = new NameValueCollection();
param.Add("logincode", JsonConvert.SerializeObject(logincode));
PartnerListModel partner = PostWebRequest<PartnerListModel>(action, param);
return JsonConvert.SerializeObject(partner);
}
public static T PostWebRequest<T>(string url, NameValueCollection parameters)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";
try
{
StringBuilder param = new StringBuilder();
foreach (string key in parameters.Keys)
{
if (param.Length > 0)
param.Append("&");
param.AppendFormat("{0}={1}", key, parameters[key]);
}
byte[] data = Encoding.GetEncoding("utf-8").GetBytes(param.ToString());
Stream reqstream = request.GetRequestStream();
reqstream.Write(data, 0, data.Length);
reqstream.Close();
Stream respStream = request.GetResponse().GetResponseStream();
string resp = new StreamReader(respStream, Encoding.GetEncoding("utf- 8")).ReadToEnd();
return JsonConvert.DeserializeObject<T>(resp);
}
catch
{
return default(T);
}
}
public static string MemberApiUrl(string url)
{
string host = ConfigurationManager.AppSettings["Domain"].Trim();
if (host.EndsWith("/") && url.StartsWith("/"))
return string.Format("{0}{1}", host.Substring(0, host.Length - 1), url);
else if (!host.EndsWith("/") && !url.StartsWith("/"))
return string.Format("{0}/{1}", host, url);
else
return string.Format("{0}{1}", host, url);
}
编译生成dll后创建程序集:
CREATE ASSEMBLY GetPartnerList FROM 'F:\SqlCLR\CM.Order\CM.Order.SqlServerCLR\bin\Release\CM.Order.SqlServerCLR.dll' WITH PERMISSION_SET = SAFE
提示错误:
程序集 'CM.Order.SqlServerCLR' 所引用的程序集 'system.runtime.serialization, version=3.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.' 不在当前数据库中。SQL Server 已尝试定位并自动从引用程序集所在的位置自动加载被引用程序集,但此操作失败(原因: 2(系统找不到指定的文件。))。请将被引用程序集加载到当前数据库中,然后重试您的请求。
添加引用啊
生成dll的时候没有报错啊,添加啥dll? 添加到数据库中? 如何添加呢?
@波仔Robert: system.runtime.serialization添加引用
静态库和动态库
@愤青愤青:
using System.IO;
using Newtonsoft.Json;
using System.Configuration;
using System.Runtime.Serialization;
我在这个类库里面加上这个也没用啊,加不加都不会报错,都可以生成dll,不是很清楚加哪儿,如何加
@愤青愤青: 可否进一步指点下,大神,要不qq,我的453176292?
@波仔Robert: 你这个是不是 调用类库 然后在调用 数据库了
类库里面加引用了么?
@愤青愤青: 是的,只有里面有个一用post的方式去调用webapi的一个接口方法,我想把webapi中的数据返回回来,访问数据库是在webapi中访问的,类库里面要加那个dll?生成时没有报错啊? 代码写完了,编译生成都没问题,创建数据集时就报这个错,看提示说让在数据库中添加这个程序集,如何添加到数据库中去哦
我新建数据库项目就可以了,不知道为啥类库项目不行