这真的很奇怪。如果我在wpf应用程序中运行它:
SKYPE4COMLib.Skype mySkype = new SKYPE4COMLib.Skype();
我没有错误。
我想在asp.net应用程序中运行它。当我在那里运行它时,我得到:
请注意,我没有遇到任何构建错误,并且在运行时出现错误。 SKYPE4COMLib.Skype类由Skype提供,可以从here下载。我不明白为什么我能够从该类实例化一个对象,就像我使用的是一个wpf appliation。
我尝试过的事情:(回想一下,我想从我的asp.net应用程序中使用该库)
1)在我的解决方案中添加wpf应用程序。然后从我的asp应用程序引用该项目。我犯了同样的错误。
2)尝试创建Web服务并在Web服务中实例化该类。这不起作用。
3)将目标框架从.Net Framewrok 4 Client Profile更改为不同的框架。这解决了我能够实例化该类的问题,但后来我无法调用这些方法。
我很难理解为什么我能够从类中实例化一个对象,如果我在一个wpf应用程序中而不是在.net应用程序甚至是一个控制台应用程序中!我似乎好像skype试图故意阻止它。
答案 0 :(得分:0)
也许运行Web服务的用户帐户(aspnet)没有足够的权限来执行此操作? 看看here,看看模仿是否适合你。
答案 1 :(得分:0)
经过长时间的尝试后,我决定通过添加必要的引用和类来使我的wpf应用程序成为控制台应用程序。然后我比较,我注意到,如果我添加:
[System.STAThreadAttribute()]
它的主要方法!!!!!
因此我的主要方法现在应该如下:
使用System; 使用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