我的Web App Bot应该根据请求返回图像。图像位于文件夹中的.csproj中,具有以下配置
将图像发送给用户的源代码
var imgMessage = context.MakeMessage();
var attachment = new Attachment();
attachment.ContentUrl = $"{HttpContext.Current.Request.Url.Scheme}://{HttpContext.Current.Request.Url.Authority}/Resources/{InvocationName}/{InvocationNameExtension}.jpg";
attachment.ContentType = "image/jpg";
attachment.Name = "Image";
context.PostAsync(attachment.ContentUrl);
虽然它在本地工作,但在发布到Azure云后却无法工作。但是,通往Azure云的路径类似于:h ttps://xxxx.azurewebsites.net/Resources/img/Cafeteria.jpg
FTP上传确实包含了文件
2>Adding file (xxxx\bin\Resources\img\Cafeteria.jpg).
该文件位于服务器上,但无法访问。我应该如何在.csproj中包含图片?由于独立性,我不想引用外部URL。
答案 0 :(得分:0)
将“构建操作”更改为:“嵌入式资源”。
string resourceFile = ResourceManager.FindResource(InvocationName, InvocationNameExtension);
string resourceFileExtension = ResourceManager.GetResourceExtension(resourceFile);
var attachment = new Attachment();
attachment.ContentUrl = BuildImageUrl(resourceFile, resourceFileExtension);
attachment.ContentType = $"image/{resourceFileExtension}";
private string ConvertToBase64(string resourceFile) => Convert.ToBase64String(ResourceManager.GetBytes(resourceFile));
private string BuildImageUrl(string resourceFile, string resourceFileExtension) => "data:image/" + resourceFileExtension + ";base64," + ConvertToBase64(resourceFile);
通过这种方法,我通过base64直接将图像内容发送给用户。像魅力一样工作