0

这真的很奇怪。如果我在 wpf 应用程序中运行它:

SKYPE4COMLib.Skype mySkype = new SKYPE4COMLib.Skype();

我没有错误。

我想在 asp.net 应用程序中运行它。当我在那里运行它时,我得到: 在此处输入图像描述

请注意,我没有收到任何构建错误,并且错误出现在运行时。SKYPE4COMLib.Skype 类由 Skype 提供,可以从这里下载。我不明白为什么我能够在使用 wpf 应用程序的情况下从该类实例化一个对象。

我尝试过的事情:(回想一下我想从我的 asp.net 应用程序中使用那个库)

1) 将 wpf 应用程序添加到我的解决方案中。然后从我的 asp 应用程序中引用该项目。我犯了同样的错误。

2)试图创建一个Web服务并实例化Web服务中的类。那是行不通的。

3) 将目标框架从 .Net Framewrok 4 Client Profile 更改为不同的框架。这解决了我能够实例化类但我无法调用方法的问题。

如果我在 wpf 应用程序中而不是在 .net 应用程序甚至控制台应用程序中,我很难理解为什么我能够从一个类中实例化一个对象!我似乎好像Skype正在故意阻止它。

4

2 回答 2

0

也许运行您的 Web 服务的用户帐户 (aspnet) 没有足够的权限来执行此操作?看看这里,看看模拟是否适合你。

于 2012-01-16T22:13:25.567 回答
0

经过长时间的尝试,我决定通过添加必要的引用和类来使我的 wpf 应用程序成为控制台应用程序。然后我比较了,我注意到如果我添加:

[System.STAThreadAttribute()]

到它工作的主要方法!!!!

因此,我的主要方法现在应该如下所示:

使用系统;使用 System.Collections.Generic;使用 System.Linq;使用 System.Text;

namespace ConsoleApplication3
{

    class Program
    {
        [System.STAThreadAttribute()]                
        static void Main(string[] args)
        {
            SKYPE4COMLib.Skype oSkype = new SKYPE4COMLib.Skype();
        }
    }
}

在 asp.net 上没有主要方法。嗯,不是我知道的。所以在 asp.net 中我必须添加等于 true 的 AspCompat 属性。

所以我的 asp.net aspx 页面现在看起来像:

    <%@ Page AspCompat="true" Language="C#" .... etc
于 2012-01-17T15:31:28.153 回答