使用Unity 4.0
我正在尝试使用Unity将文件上传到IIS 7.5上的ColdFusion 9 Web服务器
IIS返回错误500但没有解释....
我启用了IIS失败的请求跟踪规则。这让我看到从Unity发送到服务器的标题
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包含文件数据的行... 缓冲%%16%D9%E6%B0Ck#%E2%84I - /%EB%06%05%FB't继续开启
直到最后一个...... 缓冲液9%97%B7'%BE%D0%AB%09%C9%AD%88%D2
然后它使用CALL_ISAPI_EXTENSION调用ColdFusion DLL C:\ ColdFusion9 \运行时\ lib中\ WSCONFIG \ 1 \查找jrun_iis6_wildcard.dll
然后错误:
MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName IsapiModule
通知128
HttpStatus 500
HttpReason内部服务器错误
HttpSubStatus 0
ErrorCode 0
ConfigExceptionInfo
通知EXECUTE_REQUEST_HANDLER
ErrorCode操作成功完成。 (0x0)
ColdFusion中的某些内容正在轰炸.... 通过ColdFusion日志的行程找不到与原始请求相关的任何内容
我尝试将相同的内容发布到较旧版本的Coldfusion 6.1,并产生了此错误:
500腐败表单数据:无前导边界:!= --xnwss9NYfDunlkBN78LJhFHrlEDhqxHdKuXJxmjf
Unity似乎为IIS 7.5生成了正确的边界值,我们可以在上面看到但是我不确定....是否应该有一个未发送的ENDING边界?
不幸的是,除了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传递标题,但WWW应该根据文档自动执行。
我尝试在AddBinaryData方法中传递mime类型
如果我按下AddBinaryData行,它就会很好地发布到页面上。
有没有人知道我可以设置的网页工具作为我的帖子网址,它会吐出从帖子中收到的内容,包括标题?
使用Unity WWW Class的文件上传是否有任何类似的问题?
谢谢! 莱恩
答案 0 :(得分:0)
您可以自行手动形成标题来测试:
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的更多文档。
答案 1 :(得分:0)
您需要像这样启用http post get protocols.Change Web.config
文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings />
<connectionStrings />
<system.web>
<compilation debug="true">
</compilation>
<authentication mode="Windows" />
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>
<identity impersonate="false" />
</system.web>
<system.webServer>
<directoryBrowse enabled="true" />
<staticContent>
<mimeMap fileExtension=".unity3d" mimeType="application/octet-stream" />
</staticContent>
</system.webServer>
</configuration>