首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mono、xsp2、npgsql无法加载程序集

mono、xsp2、npgsql无法加载程序集
EN

Stack Overflow用户
提问于 2009-12-10 21:00:00
回答 3查看 3.4K关注 0票数 0

我正在编写web服务,我有两个类:

代码语言:javascript
复制
<%@ WebService Language="C#" Class="CairoParts.ProductsInfoWS.ProductsInfoWS.cs" %>

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace CairoParts.ProductsInfoWS
{    
    [WebService(Namespace = "http://localhost:8081/ProductsInfoWS")]     
    public class ProductsInfoWS : System.Web.Services.WebService
    {        
        [WebMethod]
        public List<string> ReceiveFile(byte[] bytes, string fileName, string supplier)
        {
        }
    {
}

和Database.cs:

代码语言:javascript
复制
using System;
using System.Data;
using System.Configuration;
using Npgsql;

namespace CairoParts.ProductsInfoWS
{ 
   public class Database
    {  
    }
 }

当我启动xsp2并在浏览器http://localhost:8081/ProductsInfoWS.asmx中输入时,我得到这个错误:

/usr/lib/mono/2.0/gmcs.exe:22858):警告**:无法加载从/tmp/vadmin-temp-aspnet-0/b8083b1b/assembly/shadow/94001eba/43c949ff_d7c95745_00000001/CairoParts.ProductsInfoWS.dll引用的以下程序集:程序集: Npgsql (assemblyref_index=2)版本: 2.0.6.0公钥: 5d8b90d52f46fda7在全局程序集缓存中找不到该程序集,该路径在MONO_PATH环境变量中列出,或放在执行程序集(/tmp/vadmin-temp-aspnet-0/b8083b1b/assembly/shadow/94001eba/43c949ff_d7c95745_00000001).的位置。

我的Npgsql.dll文件在'bin‘目录中。怎么了..。

EN

回答 3

Stack Overflow用户

发布于 2009-12-10 21:17:31

可能是dll Npgsql.dll是强名称签名的,因此需要放在全局程序集缓存中,您是否尝试过将dll复制到GAC所在的位置?

希望这能有所帮助,致以最好的问候,汤姆。

票数 0
EN

Stack Overflow用户

发布于 2009-12-15 13:40:11

运行:

代码语言:javascript
复制
monodis --assembly bin/Npgsql.dll

以验证您的程序集与从CairoParts.ProductsInfoWS.dll引用的版本和公钥是否相同。

在我从源代码编译的本地Mono安装中,我在Npgsql的gac中有3个目录:

代码语言:javascript
复制
1.0.5000.0__5d8b90d52f46fda7
2.0.0.0__5d8b90d52f46fda7
4.0.0.0__5d8b90d52f46fda7

而且它们都没有2.0.6.0版本。

也许您需要重新编译CairoParts.ProductsInfoWS.dll,以便它引用系统中存在的程序集。

票数 0
EN

Stack Overflow用户

发布于 2009-12-15 15:29:44

我重新编译了我的项目,并运行了您建议的命令,以下是输出:

代码语言:javascript
复制
Assembly Table
Name:          Npgsql
Hash Algoritm: 0x00008004
Version:       2.0.6.0
Flags:         0x00000001
PublicKey:     BlobPtr (0x000020b1)
Dump:
0x00000000: 00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 
0x00000010: 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 
0x00000020: 2B 3C 59 0B 2A 4E 3D 34 7E 68 78 DC 0F F4 D2 1E 
0x00000030: B0 56 A5 04 20 25 0C 66 17 04 43 30 70 1D 35 C9 
0x00000040: 80 78 A5 DF 97 A6 2D 83 C9 A2 DB 2D 07 25 23 A8 
0x00000050: FC 49 13 98 25 4C 6B 89 32 9B 8C 1D CE F4 3A 1E 
0x00000060: 7A A1 61 53 BC EA 2A E9 A4 71 14 56 24 82 6F 60 
0x00000070: D7 C8 E7 1C D0 25 B5 54 A0 17 7B D9 35 A7 80 96 
0x00000080: 29 F0 A7 AF C7 78 EB B4 AD 03 3E 1B F5 12 C1 A9 
0x00000090: C6 CE EA 26 B0 77 BC 46 CA C9 38 00 43 5E 77 EE 
Culture:       

看起来npgsql的版本没问题,但是webservice仍然会产生同样的错误。

我通过将数据库类放在webservice asmx文件中解决了这个问题,但这更像是一种变通而不是真正的解决方案……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1880835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档