【发布时间】:2017-05-28 21:02:10
【问题描述】:
我创建了一个非常简单的预编译函数(从生成的工具复制代码):
public class Foo
{
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req)
{
//log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
// Set name to query string or body data
name = name ?? data?.name;
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}
}
这个驻留的 dll 被复制到函数的文件夹中,并在 function.json 中链接起来,如下所示:
{
"scriptFile": "ExternalFunction.dll",
"entryPoint": "ExternalFunction.Foo.Run",
"disabled": false,
"bindings": [
{
"authLevel": "function",
"name": "req",
"type": "httpTrigger",
"direction": "in"
},
{
"name": "res",
"type": "http",
"direction": "out"
}
]
}
这一切都很好。
然后我想做的是添加一个从 Run 方法调用的私有方法,所以(小步骤)我将它添加到 Foo 类中:
private static string Test()
{
return "Hello";
}
这会导致 CLI 工具出现以下错误:
错误 AF007: 方法与提供的入口点名称匹配 配置('ExternalFunction.Foo.Run')不存在。您的 函数必须包含一个公共方法,一个名为的公共方法 'Run',或与在 “入口点”元数据属性。函数编译错误错误 AF007:与提供的入口点名称匹配的方法 配置('ExternalFunction.Foo.Run')不存在。您的 函数必须包含一个公共方法,一个名为的公共方法 'Run',或与在 'entryPoint' 元数据属性。
这是一个非常奇怪的消息,因为添加私有静态方法肯定不会影响函数能够找到 function.json 中指定的公共方法?!
有什么想法吗?
【问题讨论】:
标签: azure azure-functions