http - Unity WWW Class Method Post 在 IIS7.5 上使用 Coldfusion 9 上传文件时出现错误

标签 http coldfusion unity3d iis-7.5 http-post

使用统一 4.0

我正在尝试使用 Unity 将文件上传到 IIS 7.5 上的 ColdFusion 9 Web 服务器

IIS 返回错误 500,没有任何解释....

我打开了 IIS 失败请求跟踪规则。这让我看到从 Unity 发送到服务器的 header

Content-Length: 496473
Content-Type: multipart/form-data; boundary="ZlJady3vWV8N5mlsvGGGJ3MEbxdsDabqkUtreBBK"
Accept: */*
Expect: 100-continue
Host: www.test.com
User-Agent: UnityPlayer/4.3.0f4 (http://unity3d.com)

这是在一般请求实体部分

--ZlJady3vWV8N5mlsvGGGJ3MEbxdsDabqkUtreBBK
Content-Type: text/plain; charset="utf-8"
Content-disposition: form-data; name="frameCount"

35805
--ZlJady3vWV8N5mlsvGGGJ3MEbxdsDabqkUtreBBK
Content-Type: image/png
Content-disposition: form-data; name="file"; filename="file.png"

%89PNG
%1A

到目前为止,这一切对我来说都很好......然后我得到了一堆 包含文件数据的 GENERAL_REQUEST_ENTITY 行... Buffer %16%D9%E6%B0Ck#%E2%84I-/%EB%06%05%FB't that goes on and on

直到最后一个... 缓冲区9%97%B7'%BE%D0%AB%09%C9%AD%88%D2

然后它用 CALL_ISAPI_EXTENSION 调用 ColdFusion DLL C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll

然后报错: MODULE_SET_RESPONSE_ERROR_STATUS 模块名称 IsapiModule 通知128 HTTPStatus 500 HttpReason 内部服务器错误 HttpSubStatus 0 错误代码 0 配置异常信息
通知 EXECUTE_REQUEST_HANDLER ErrorCode 操作成功完成。 (0x0)

所以 ColdFusion 中的某些东西正在轰炸...... 浏览 ColdFusion 日志发现与原始请求无关

我尝试将相同的内容发布到旧版本的 Coldfusion 6.1,但它产生了这个错误:

500 损坏的表单数据:没有前导边界:!= --xnwss9NYfDunlkBN78LJhFHrlEDhqxHdKuXJxmjf

Unity 似乎为 IIS 7.5 生成了正确的边界值,我们可以在上面看到,但我不确定......是否应该有一个未发送的结束边界?

不幸的是,除了 IIS 7.5 失败请求日志中,我看不到 Unity 发送或服务器接收的实际数据。

我看到很多帖子,人们可以毫无问题地将文件上传到 PHP,

这是我的代码:

WWWForm form = new WWWForm();
form.AddField("frameCount", Time.frameCount.ToString());
form.AddBinaryData ( "file", Image1.EncodeToPNG());
//Hashtable myheaders = new Hashtable();    
//myheaders.Add("enc-type", "multipart/form-data");
WWW w = new WWW("http://www.test.com/AuctionImages.cfm",form);

它基本上只是从似乎适用于其他服务器的示例中复制而来... 我玩过 enc-type 的传递 header ,但 WWW 应该根据文档自动执行此操作。

我尝试在 AddBinaryData 方法中传递 mime 类型

如果我删除 AddBinaryData 行,它会很好地发布到页面。

有谁知道我可以将其设置为我的帖子 URL 的网页工具,该工具会吐出从帖子收到的内容(包括标题)?

有没有人遇到过使用 Unity WWW Class 上传文件的类似问题?

谢谢! 瑞安

最佳答案

Ryan,您可能几乎已经自己解决了问题,因为 ColdFusion 可能不正确(或正确!)解释了多部分边界 header 。

您可以通过自己手动形成 header 来对此进行测试:

var form = new WWWForm();
form.AddField("name","value");
var headers = form.headers;
var rawData = form.data;
var url = "www.myurl.com";

// Add a custom header to the request:
headers["Content-Type"] = "multipart/form-data";
headers["Boundary"] = "---------------";

// Post a request to an URL
var www = new WWW(url, rawData, headers);
yield www;

//.. process results from WWW request here...

有关表单标题的更多文档 HERE .

关于http - Unity WWW Class Method Post 在 IIS7.5 上使用 Coldfusion 9 上传文件时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20361962/

相关文章:

android - Ionic $http 请求无法使用错误数据 null 状态 -1

delphi - Delphi 2010 中的 Indy IdHttp Post 问题

javascript - AngularJs:嵌套状态不显示

c# - 在 HoloLens 1 上,在使用默认构造函数 "ArgumentException: Value does not fall within the expected range"创建 TcpClient 对象时抛出

ios - 寻找具有板载 RTK 且易于与 iOS 应用程序连接的 GPS 设备

java - 将用户凭据从 session 传递到小程序?

html - 样式化 HTML 电子邮件

ColdFusion 9.0.0 TLSv1.2

mysql - 如何在添加记录时插入 id 列表?

c# - 在 Unity 中使用 DLL,MonoBehaviour