Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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# 如何在WCF控制台应用程序中增加文件大小限制_C#_Wcf - Fatal编程技术网

C# 如何在WCF控制台应用程序中增加文件大小限制

C# 如何在WCF控制台应用程序中增加文件大小限制,c#,wcf,C#,Wcf,我有一个非常简单的WCF服务(一个用于文件上传的控制台应用程序)。我不断收到错误(400)错误请求。当我上传小文件(4kb)但700kb失败时,它可以工作 根据我在堆栈溢出和其他方面所做的阅读,我必须增加MaxReceivedMessageSize。这是使用自定义类并重写OnOpening方法实现的,但仍然不起作用 我正在使用webclient测试一个控制台应用程序 outputBytes=webClient.UploadData(baseUrl+“/uploads/2.”+filename o

我有一个非常简单的WCF服务(一个用于文件上传的控制台应用程序)。我不断收到错误(400)错误请求。当我上传小文件(4kb)但700kb失败时,它可以工作

根据我在堆栈溢出和其他方面所做的阅读,我必须增加MaxReceivedMessageSize。这是使用自定义类并重写OnOpening方法实现的,但仍然不起作用

我正在使用webclient测试一个控制台应用程序
outputBytes=webClient.UploadData(baseUrl+“/uploads/2.”+filename only,File.ReadAllBytes(filename))

此外,我正在使用WebServiceHost,如中所示
var uri=新uri(“http://localhost:8000");
var svc=新的WebServiceHost(typeof(UploadService),uri)

我如何解决这个问题? PS:应用程序没有配置文件,所以我将研究如何在代码中设置它。如果没有,并且需要一个配置文件,那么内容应该是什么

注: 我找到了这个链接,其中解释了这些属性仅对基于soap的服务有效。他建议更新web.config。由于这是一个控制台应用程序,我想知道如何做到这一点'

问候。

您有预约吗


它包括代码和配置。

您可以通过编程方式设置maximumreceivedmessage,如下所示:

 var binding = new wsHttpBinding(); // or whatever binding you are using
 binding.MaxReceivedMessageSize = Int32.MaxValue; 
 var wcfClient = new WCFServiceTestClient(binding, strServiceURL); 
        WebServiceHost webServiceHost = new WebServiceHost(typeof(UploadService), uri);
        WebHttpBinding binding = new WebHttpBinding();
        binding.MaxReceivedMessageSize = Int32.MaxValue;
        webServiceHost.AddServiceEndpoint(typeof(IUploadService), binding, "WebServiceHost");
        webServiceHost.Open();
希望这将足以解决你的问题,但是你可能也想考虑把文件切成比特(批处理),然后再把它发送到服务器。发送非常大的数据块可能会导致巨大的内存损失,因为客户端必须在将整个数据发送到服务器之前对其进行序列化(然后在服务器端对其进行反序列化)

编辑:根据您的其他评论(如下),承载服务的应用程序上的代码可能如下所示:

 var binding = new wsHttpBinding(); // or whatever binding you are using
 binding.MaxReceivedMessageSize = Int32.MaxValue; 
 var wcfClient = new WCFServiceTestClient(binding, strServiceURL); 
        WebServiceHost webServiceHost = new WebServiceHost(typeof(UploadService), uri);
        WebHttpBinding binding = new WebHttpBinding();
        binding.MaxReceivedMessageSize = Int32.MaxValue;
        webServiceHost.AddServiceEndpoint(typeof(IUploadService), binding, "WebServiceHost");
        webServiceHost.Open();

您好,我正在创建一个restful wcf web服务。下面是代码
private static ServiceHost CreateWebServiceHost(){var uri=new uri(SysValues.baseUrl);var svc=new WebServiceHost(typeof(UploadService),uri);return svc;}
,这就是所有代码。我把这个放在哪里?我没有显式创建绑定,因此不知道该属性在哪里找到。我根据您正在使用WebServiceHost的事实更新了我的答案,以演示如何添加服务端点。如果您需要更多信息,请告诉我:)这正是我要找的。谢谢。您好,我已经看到了该链接,但我不知道该如何应用于我的链接,因为我没有显式创建绑定。即使您没有配置绑定,您仍然在使用绑定。要调整设置,需要使用标准绑定(如httpBinding)配置绑定,并根据需要设置属性。如果您在IIS/WAS中托管,则配置绑定的最佳方法是在web中指定绑定。configI正在使用控制台应用程序。我要写什么代码来实现这一点。我正在为此创建一个webservicehost实例
var svc=newWebServiceHost(typeof(UploadService),uri)
Yeah。显然这是可能的。我没有看到第二个链接。谢谢