我正在运行iisnode并使用 edge.js 访问第 3 方 DLL 中的代码。此代码期望有一个web.config
文件可以从中提取连接字符串。
文件结构:
\noderoot\bin\my3rdParty.dll
\noderoot\cs\myCode.cs
\noderoot\api.js
\noderoot\server.js
\noderoot\web.config
cs\myCode.cs
using System;
using System.Threading.Tasks;
using My3rdPartyNamespace;
public class Startup {
public async Task<object> Invoke(dynamic input) {
// My3rdPartyObject.DoSomeStuff() looks at ConfigurationManager.ConnectionStrings
return My3rdPartyObject.DoSomeStuff((string)input.someThing);
}
}
api.js
import {Router} from 'express';
import Edge from 'edge';
import path from 'path';
let router = Router();
router.post('/doAThing', (req, res, next) => {
let aThing = Edge.func({
source: path.join(__dirname, 'cs/myCode.cs'),
references: [
'System.Web.dll',
'./bin/my3rdParty.dll'
]
});
let payload = {
someThing: req.body.someThing
};
let response = aThing(payload, true);
res.json(response);
});
export default router;
我尝试将连接字符串放在web.config
iisnode 使用的文件中,但显然 edge.js 不在那里。当我将连接字符串放入node.exe.config
并将该文件放入时它可以工作c:\program files\nodejs
,但这是一个不可接受的解决方案。
同样,我使用 edge.js 的重点是我可以使用第三方 DLL,所以我不能简单地告诉 DLL 我的连接字符串是什么,除非我可以强行将它插入ConfigurationManager.ConnectionStrings
.
我不能使用 edge-sql,因为我没有编写任何 SQL——dll 已经处理了 SQL。我无法使用环境变量设置连接字符串,EDGE_SQL_CONNECTION_STRING
因为 dll 正在web.config
.
想法?