我有一个简单的项目创建
c#
(.Net Core 6.0
)
我用
AGIScript
创建了一个Asternet
类,并从asterisk
服务器接收数据。
它运行良好,只要两者都在同一个项目中(
exe
项目)。
public void ListenToAgi()
{
var agi = new AsteriskFastAGI();
try
{
agi.MappingStrategy = new GeneralMappingStrategy(new List<ScriptMapping>()
{
new ScriptMapping() {
ScriptClass = "HI.agiSample.MyAgi",
ScriptName = "getvariable"
}
});
agi.Start();
}
catch (Exception ex)
{
}
}
MyAgi
类是:
using AsterNET.NetStandard.FastAGI;
namespace HI.agiSample
{
public class MyAgi : AGIScript
{
public override void Service(AGIRequest request, AGIChannel channel)
{
try
{
string result = GetVariable("result");
}
catch (Exception e)
{
}
}
}
}
拨号规则代码是:
exten => 110,1, NoOp(*************** agi-test ******************);
same => n,set(result=123);
same => n,agi(agi://localhost/getvariable);
same => n,Hangup();
我的问题是:
当我将
MyAgi
课程移动到 ClassLibrary
项目时,它无法工作和收听,但是两个课程都在同一个项目中 (exe
),它运作良好。
这是星号日志:
VERBOSE “没有为 URL 'agi://my ip/getvariable' 配置脚本 (脚本'getvariable')“
注意事项:
namespace
在两个项目中都是一样的,只有assembly
名字不同。
Project A
是windows desktop
应用程序,Project B
是ClassLibrary
.
有人能帮帮我吗?