Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
C# 如何从azure http触发器接收大型响应_C#_Azure_Azure Functions_Httpresponse - Fatal编程技术网

C# 如何从azure http触发器接收大型响应

C# 如何从azure http触发器接收大型响应,c#,azure,azure-functions,httpresponse,C#,Azure,Azure Functions,Httpresponse,我的应用程序将调用http触发器来读取blob文件 当文件大小很小(大约30MB)时,我能够从http触发器接收响应。当文件大小约为160MB时,我的应用程序将收到空响应 只有在azure环境中部署Http触发器时,才会面临此问题。当从我的本地机器运行http触发器并在我的应用程序中调用本地http触发器时,工作正常 呼叫应用程序 string WebAddress = "https://MyfunctionApp.azurewebsites.net/api/Report"; //string

我的应用程序将调用
http触发器来读取blob文件

当文件大小很小(大约30MB)时,我能够从http触发器接收响应。当文件大小约为160MB时,我的应用程序将收到空响应

只有在azure环境中部署Http触发器时,才会面临此问题。当从我的本地机器运行http触发器并在我的应用程序中调用本地http触发器时,工作正常

呼叫应用程序

string WebAddress = "https://MyfunctionApp.azurewebsites.net/api/Report";
//string WebAddress = "http://localhost:7071/api/FIComparisonReport";
string WebServiceUri = string.Format("{0}?groupcode={1}&domicile={2}&legalstructure={3}",
                WebAddress,
                Uri.EscapeDataString(groupCode),
                Uri.EscapeDataString(domicile),
                Uri.EscapeDataString(legalStructure));

WebRequest request = WebRequest.Create(WebServiceUri);
request.Method = "GET";
request.Timeout = 360000;
WebResponse response = request.GetResponse();

var encoding = Encoding.UTF8;
string responseText = "";
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
    responseText = reader.ReadToEnd(); // empty for large files
}
Http触发器

public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestMessage req,
            ILogger log)
        {
//read blob to stream 
 MemoryStream resultSets = myfunc();
 var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new ByteArrayContent(resultSets.GetBuffer())
            };

response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

return response;
公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Anonymous,“get”,“post”,Route=null)]HttpRequestMessage请求,
ILogger日志)
{
//将blob读取到流
MemoryStream resultSets=myfunc();
var响应=新的HttpResponseMessage(HttpStatusCode.OK)
{
Content=newbytearraycontent(resultSets.GetBuffer())
};
response.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/八位字节流”);
返回响应;

这里缺少什么?

响应大小限制为最大100 MB

运行时限制,刚刚增加到100MB


这涉及到HTTP请求,但我相信响应也有相同的限制。

但是当HTTP触发器托管在我的本地机器上时,它是如何工作的,因为您的本地机器不是Azure。确切地说。如果您自己托管函数运行时(即使是在本地运行调试时也会发生这种情况),则会有不同的限制(或者通常根本没有)到位。由于Azure是一个共享且完全受管理的环境,因此需要设置某些限制。我从Azure功能返回的响应更大,甚至包括消费计划。我认为这是一个内存限制,而不是响应限制。请告诉我们更多关于您的用例的信息,也许我们可以建议稍微不同的体系结构,通常您我们不想通过http@l--我正在尝试从blob存储中读取json文件,并将其显示在asp.net gridview中。您需要查看signalr@mjwills我不认为这是重复的。这个问题与回复有关,并且与发布的相关请求问题有不同的根本原因。我无法写出一个实际的答案,但这个链接是我解决问题的方式: