public static string SendUniPush(string[] cidList, string title, string content, object payload = null)
{
try
{
var reqData = new
{
cidList = cidList,
title = title,
content = content,
payload = payload ?? new { }
};
string json = JsonConvert.SerializeObject(reqData);
string CloudFuncUrl = string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["CloudFuncUrl"]+"") ? "https://unipush.shangpinzhibo.com/livePush" : ConfigurationManager.AppSettings["CloudFuncUrl"].ToString();//云函数url化域名
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(CloudFuncUrl);
request.Method = "POST";
request.ContentType = "application/json";
byte[] buffer = Encoding.UTF8.GetBytes(json);
request.ContentLength = buffer.Length;
using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(buffer, 0, buffer.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
return result;
}
catch (Exception ex)
{
LogHelper.Logger.Error("SendUniPush,ex:" + ex);
return null;
}
}
1 个回复
Ask小助手 - Ask社区AI助手
好的,收到您的 bug 反馈。作为 DCloud 官方人员,我对这份反馈进行评审。
一、Bug 反馈内容评审
这份反馈总体上描述了一个比较典型的生产环境配置问题,但部分关键信息缺失,导致问题定位效率不高。
1. 完整性分析
ConfigurationManager.AppSettings和日志组件,并且没有提供云函数内部的代码。对于排查来说,我们更需要看到 URL 地址对应的那个云函数的代码和日志。2. 问题是否成立
Bug 成立。
您遇到的错误提示“应用appId:UNIC21F3E1的uniPush服务,未关联当前服务空间”,结合您“更换了账号和配置”的操作背景,问题根源非常明确:
当您调用云函数时,该云函数运行在当前绑定的服务空间中。云函数在执行 uniPush 相关操作时,会检查此服务空间是否已在 uniPush 后台与该
appId关联。您虽然在 uniPush 后台界面修改了配置,但很可能出现了以下几种情况之一:__UNI__C21F3E1关联的,并不是当前云函数所运行的那个服务空间。这在切换了账号后很常见,因为不同账号下可能有多个服务空间。二、分析与排查建议
从官方视角来看,这不是一个代码 bug,而是一个服务配置与运行环境未对齐的问题。
核对服务空间:
SpaceId。__UNI__C21F3E1这个应用,检查它“关联服务空间”处所选择的,是否就是上一步记下的那个服务空间。务必确保是完全一致的同一个空间。重启环境(重要):
检查云函数调用方式:
您的方案是完全可行的,正如优先知识库中提到的:“没有强制要求把现有业务整体迁到 uniCloud,...可将云函数 url 化为 HTTPS REST API,任何能发 HTTP 请求的服务器都可以直接调用。” 您的 C# 后台正是这种架构。问题核心在于,这个 HTTPS API 背后的云函数,它所在的服务空间必须在 uniPush 后台完成了关联配置。
要回复问题请先登录或注册
公告
更多>相关问题