如何使用app.config使我的控制台应用程序传输大于4 MB的文件

时间:2015-01-26 14:54:06

标签: c# xml console-application app-config

我有幸进一步开发了一个用C#编写的内部控制台应用程序。此应用程序的目的是将多个文件从一个服务器同步到另一个服务器,基本上将文件从一个文件复制到另一个服务器。该应用程序适用于最大4 MB的文件,我无法在应用程序本身的任何地方找到它,将文件大小限制为除日志文件以外的4 MB。

此控制台应用程序是存储用户创建的表单的Web应用程序的一部分。我已设法限制webapplication以允许大小不超过100 MB的文件,但是同步应用程序不会将较大的文件从软件仓库传输到另一台服务器上的相应位置。

不幸的是,我没有其他日志,而不是那些说文件(不超过4 MB)转移OK的日志。调试应用程序是不行的,因为它只在服务器上运行,我无法在本地计算机上运行它。

我的问题是,是否可以在app.config文件中设置任何内容以允许应用程序同步大于4 MB的文件?

在这个大项目的webapplication部分,我使用了以下代码:

<system.web>
    <httpRuntime maxRequestLength="102400" executionTimeout="1200"/>
</system.web>

但是,由于这部分不是Web应用程序(似乎)不关心该配置行。

这是控制台同步应用程序的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="SynchConfiguration" value="C:\Documents and Settings\My Documents\Visual Studio 2010\Projects\DepotSynch\Depot.Synch\DepotSynchConfiguration.xml"/>
        <add key="SynchLog"  value="C:\Documents and Settings\My Documents\Visual Studio 2010\Projects\DepotSynch\Depot.Synch\DepotSynchLOG.txt"/>
        <!-- Int Size in MB -->
        <add key="MaxLogFileSize" value="4"/>

        <!-- SHS Web Service API Configuration -->
        <add key="Status" value="test"/>
        <add key="From" value="1234567890"/>
        <!-- Identification Nummer -->
        <add key="To"  value="1234567890.web"/>
        <add key="CertLocation" value="certificate\test\test.p12"/>
        <!-- placeing of certet i filsystemet -->
        <add key="CertPwd" value="test234test"/>
        <!-- cert -->
        <!-- <add key="ShsUrl" value="Is set ini DepotSynchConfiguration.xml for each environment"/> -->
        <!-- URL to Shs Service -->
        <add key="ConnectByCertAndPwd" value="true"/>
        <!-- True/False - for certificate -->
        <add key="SendFileBySHS" value="false"/>
        <!-- For test. Won't send the file/s. -->
    </appSettings>

    <system.serviceModel>
        <bindings>
          <wsHttpBinding>
            <binding name="MyWsHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
                <security mode="Message">
                    <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
                </security>
            </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:50232/Depot.svc"  binding="wsHttpBinding" bindingConfiguration="MyWsHttpBinding" contract="DepotReleaseServiceReference.IDepot" name="MyWsHttpBinding">
                <identity>
                    <servicePrincipalName value="&#xD;&#xA;          " />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

不幸的是,我不能去询问原始开发者这方面的帮助,因为他大约2年前就辞职了。

1 个答案:

答案 0 :(得分:0)

我有一个网络应用程序,以下是我如何解决我的问题,将这行代码放在配置文件中

<system.webServer>
  ...
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483647" />
    </requestFiltering>
  </security>
</system.webServer>

将帖子 另请查看此主题

The maximum string content length quota (8192) has been exceeded while reading XML data