如何在 WCF 中为非自定义绑定定义 maxReceivedMessageSize 时使用 ServiceRoutes

2024-01-02

编辑此内容以重新关注实际问题。我保留了消息底部的原始问题,但更改了标题和内容以反映实际发生的情况。

我需要重写通过 ServiceRoute 机制添加到 MVC3 项目的 WCF 服务的 maxReceivedMessageSize。在 web.config 中指定绑定不起作用。一个人如何做到这一点。


最初的问题低于此线,但由于我看到的大量误报而具有误导性。

您好,我使用了一些示例将文件流上传服务添加到我的 MVC3 项目中。如果我使用默认绑定(即未在 web.config 中定义),只要我不超过 64k 默认大小,该服务就可以工作。当我尝试定义自己的绑定以增加大小时,我的跟踪中出现内容类型不匹配,并且响应中出现 HTTP415 不支持的媒体类型。我正在尝试通过 HTTP 通过 fiddler 调用它,并且不使用 WCF 客户端。 这是跟踪中的错误:

Content Type image/jpeg was sent to a service expecting multipart/related;type="application/xop+xml".  The client and service bindings may be mismatched.

这是 web.config 服务模型部分

 <system.serviceModel>
<behaviors>
  <endpointBehaviors>
    <behavior name="NewBehavior0" />
  </endpointBehaviors>
</behaviors>
<services>
  <service name="AvyProViewer.FileService">
    <endpoint address="UploadFile" binding="basicHttpBinding" bindingConfiguration=""
      contract="AvyProViewer.FileService"  />
  </service>
</services>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<bindings>
  <basicHttpBinding>
    <binding name="NewBinding0" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
      messageEncoding="Mtom" transferMode="StreamedRequest">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>

这是服务:

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class FileService
{      
    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "UploadFile")]       
    public string UploadFile(Stream fileStream)       
    {
        string path = HostingEnvironment.MapPath("~");  
        string fileName = Guid.NewGuid().ToString() + ".jpg";
        FileStream fileToupload = new FileStream(path + "\\FileUpload\\" + fileName, FileMode.Create);

        byte[] bytearray = new byte[10000];
        int bytesRead, totalBytesRead = 0;
        do
        {
            bytesRead = fileStream.Read(bytearray, 0, bytearray.Length);
            totalBytesRead += bytesRead;
        } while (bytesRead > 0);

        fileToupload.Write(bytearray, 0, bytearray.Length);
        fileToupload.Close();
        fileToupload.Dispose();
        return fileName;
    }
}

这是我在 MVC3 路线中公开它的地方:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.Add(new ServiceRoute("FileService", new WebServiceHostFactory(), typeof(FileService)));
        . . .
}

我认为问题在于mtom声明为messageEncoding在你的绑定中。尝试将 messageEncoding 更改为Text.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 WCF 中为非自定义绑定定义 maxReceivedMessageSize 时使用 ServiceRoutes 的相关文章

随机推荐

  • 使用事件侦听器重定向所有“未找到路由 404 未找到 - NotFoundHttpException”

    如何在事件侦听器中触发重定向到特定路由器 有很多例子 但我找不到 GetResponseForExceptionEvent 的例子 例如 当我通过 roter作为一个论点 this gt router 似乎没有这样工作 我检查了这些 但我可
  • AWS 托管的应用程序出现错误 324 空响应

    Error 324 net ERR EMPTY RESPONSE The server closed the connection without sending any data 我在我的亚马逊 EC2 服务器上收到此错误 这不会发生在我
  • SpringrestTemplateexecute() POST大文件并获取响应

    这花了我很长时间才解决 所以我想分享它 大多数信息都来自 SO 我想将其整合到这一地方 我的要求是使用 RESTFul POST 上传文件 由于文件可能很大 我想流式传输文件 我显然希望能够阅读回复 我计划使用 Jersey 作为 REST
  • 隐藏/显示列

    在html中 是否可以显示 隐藏列 例如我们有一个这样的表 ID Color Number 1 990000 C001 2 009900 C002 3 FFFFFF C003 4 000000 C004 代码如下 table tr th c
  • 如何使 numpy 数组列表都具有相同的形状?

    所以我的列表中有一堆 2d Numpy 数组 我想确保它们都具有相同的形状 我知道每个数组的第二个维度是相同的 但第一个维度有所不同 假设数组 X 的形状为 n m 数组 Y 的形状为 n 2 m 我想向数组 X 添加两行零 以便 X 和
  • 如何向 ggplot 添加数据标签

    尝试使用 ggplot 将数据标签添加到条形图时出现以下错误 Error geom text requires the following missing aesthetics x 我的样本数据如下 Team Goals Mancheste
  • 为什么当我离开并返回办公室网络时必须重新安装 MSMQ?

    我遇到了一个非常令人沮丧的问题 即使 MSMQ 已安装并启动 但它仍然不断拒绝工作 我在 Vista Business 笔记本电脑上安装了 MSMQ MSMQ Container MSMQ Server MSMQ Triggers MSMQ
  • 配置文件的 Rpm 升级处理

    我正在使用 rpm upgrade 命令 并注意到 rpm 有不同的方式来处理修改的配置文件 因此它不会在升级过程中丢失 据我了解 如果修改了配置文件并使用 rpm U 升级了软件包 rpm 会将原始属性文件重命名为 file rpmsav
  • 处理 TTN_LINKCLICK 消息后如何知道气球上点击了哪个链接?

    After 特拉马先生 https stackoverflow com users 960757 tlama已经回答了我的最后一个问题 如何捕获 TTN LINKCLICK 通知 https stackoverflow com questi
  • MVC4 捆绑:保存捆绑包 URL 的位置

    当bundle在MVC4中注册时 什么负责 拦截 传入的http要求 bundles someBundle v 1hDzBpmYJm4Iu OjRN1YqS1WeNThVl0kStLJGP8WCr41 另外 由于每个捆绑包的哈希值仅计算一次
  • Matplotlib 用颜色或形状区分平均值和中位数

    我正在使用 matplotlib 版本 1 4 3 我想制作一个 Violinplot 我想显示平均值和中位数 这很容易做到 但我想标记平均值和中位数 以便可以通过更改轻松区分它们其中之一的颜色和 或形状 但我在文档中看不到任何允许这样做的
  • 使用 PHP 的 Fedex SOAP API 请求多个跟踪号码

    我希望将所有 FedEx 跟踪信息缓存在我自己的数据库中 我的公司每天大约有 150 多个跟踪号码 根据这个链接 http www fedex com us developer product WebServices MyWebHelp A
  • 如何在 onReceive 计时器关闭 SwiftUI iOS 中导航另一个视图

    我试图在计时器达到特定时间时实现到另一个视图的导航 例如 我想在 5 分钟后导航到另一个视图 在 Swift 中 我可以轻松实现这一点 但我是 SwiftUI 的新手 非常感谢一些帮助 My code struct TwitterWebVi
  • Jetpack 使用多个可选参数组合导航

    https developer android com jetpack compose navigation optional args https developer android com jetpack compose navigat
  • Express.js sendFile 返回 ECONNABORTED

    在运行 Express js 3 8 6 的简单节点服务器上 我正在尝试使用sendFile向客户端发送一个简单的 HTML 文件 从读取的文件来看 该路径是正确的 浏览器上的缓存已禁用 显示的代码是 server js 文件 直接从节点运
  • 卸载活动 TCL Mac

    我正在尝试在 Mac 上卸载 Active TCL 但网站提供的代码不起作用 我收到错误消息 指出不是目录 当我查看代码提供的文件路径时 我可以手动查找 但它不起作用 还有其他方法可以摆脱这个吗 以下是提供的代码 cd Library Fr
  • 无法在 angularJs 中设置 DropDown 的选定值

    我有一个下拉菜单 我使用绑定它的值ng repeat在选项上 我想仅使用值字段设置选定的值 这是我的代码 div div
  • 有没有办法使用 ARM 模板创建 Azure 服务主体?

    我正在尝试编写一个 ARM 模板 该模板可以在 Azure 上创建具有所有指定权限的服务主体 最终目标是自动化此过程并使用模板创建 n 个服务主体 有没有办法做到这一点 非常感谢任何帮助 谢谢 正如 silent 所说 不可能通过 ARM
  • 动态规划矩阵链乘法

    我正在阅读动态规划中的矩阵链乘法 它有一个简单的递归解决方案 其运行时间呈指数级 http www geeksforgeeks org dynamic programming set 8 matrix chain multiplicatio
  • 如何在 WCF 中为非自定义绑定定义 maxReceivedMessageSize 时使用 ServiceRoutes

    编辑此内容以重新关注实际问题 我保留了消息底部的原始问题 但更改了标题和内容以反映实际发生的情况 我需要重写通过 ServiceRoute 机制添加到 MVC3 项目的 WCF 服务的 maxReceivedMessageSize 在 we