Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在azure中部署时无法创建绝对文件路径_.net_Azure_Botframework_Filepath - Fatal编程技术网

.net 在azure中部署时无法创建绝对文件路径

.net 在azure中部署时无法创建绝对文件路径,.net,azure,botframework,filepath,.net,Azure,Botframework,Filepath,我正在尝试创建一个聊天机器人,然后将其部署到我的azure帐户中。问题是,有时我需要将讨论中的文档作为响应发布,并且当聊天机器人在azure中被销毁时,绝对文件路径不起作用,但它在我的本地主机中起作用 var imagePath = HttpContext.Current.Server.MapPath("~/Files/mutuelle.pdf"); 这是生成文件路径的代码。在azure中部署时,指向文件的链接为: https://******.azurewebsites.net/dev/ww

我正在尝试创建一个聊天机器人,然后将其部署到我的azure帐户中。问题是,有时我需要将讨论中的文档作为响应发布,并且当聊天机器人在azure中被销毁时,绝对文件路径不起作用,但它在我的本地主机中起作用

var imagePath = HttpContext.Current.Server.MapPath("~/Files/mutuelle.pdf");
这是生成文件路径的代码。在azure中部署时,指向文件的链接为:

https://******.azurewebsites.net/dev/wwwroot/Files/mutuelle.pdf

我猜问题是imagePath变量是

https://******.azurewebsites.net/Files/mutuelle.pdf

因此,我在azure dev/wwwroot/中生成绝对文件路径时遇到问题。
有人能给我看一下解决方案吗?

就我个人而言,我使用以下命令通过相对路径访问Azure上的文件,我的文件位于我的VS项目的凭据文件夹中,一切正常

System.Web.HttpContext.Current.Server.MapPath("..\\Credential\\XXX.json");

您可以在项目(例如/Contents)中创建一个文件夹,并将需要发送的所有文件保留在该文件夹中

部署到Azure后,您可以将托管url添加到web.config文件中,如下所示:

<appSettings>      
<add key="HostedUrl" value="https://**.azurewebsites.net/Content/" />
<appSettings>

我不理解Server.MapPath与您发布的URL之间的关系https://.... Server.MapPath在服务器硬盘上返回一个物理路径,如c:\inetpub\…另外,不要这样做,不要写入应用程序的存储,使用%TEMP%作为临时存储映射到应用程序服务上的d:\local,或者更好的是,上载到blob存储。我认为这只在部署到azure时有效,而不是在本地主机上。有什么东西可以在这两个方面都起作用吗?它也可以在本地主机上起作用。您只需要将托管url更改为您的本地主机地址。当我这样做时,我可以看到给我的路径是D:\home\site\wwwroot\Files\mutuelle.pdf,但路径应该是这样的:https://********.azurewebsites.net/dev/wwwroot/Files/mutuelle.pdfI不理解为什么您绝对想要一个url而不是一个物理路径。因为当我在azure中测试我的机器人时,文件不再被识别,好像那里没有文件一样。我想要的是一个在localhost和azure上都能工作的路径。
private static string contentUrl = ConfigurationManager.AppSettings["HostedUrl"];    
var imageUrl = contentUrl + "imageName.png";