将 SVG 字符串发布到 Controller 在本地工作但不在服务器上工作
Posting SVG string to Controller works locally but not on server
我有一个正在 posting 的表单,其中包含 2 个数值和一个包含 SVG(使用 Fabricjs 生成)的长字符串。控制器上传 SVG 并输出包含它的 PDF。我使用标准格式 post 而不是 Ajax POST 的原因是因为我知道 ajax 不能 return 文件下载。
我将 maxJsonLength、aspnet:MaxJsonDeserializerMembers 和 maxRequestLength 都设置为比这里涉及的值(10k 文本)高得多的值,我认为 json-related 在这里不起作用无论如何,因为它是标准格式 post.
当我在 Visual Studio 中 运行 本地时,这非常有效。一旦发布到服务器,它就会失败。我通过远程调试附加到进程,它甚至没有击中控制器。我有一个类似的控制器动作,它也接受相同的 SVG 字符串,但它也不起作用。
在网络控制台中,操作 return 是 200。当我查看 headers 时,我看不出 post 发送到服务器的内容与发送到服务器的内容有什么区别. 我在当地看到的。 Elmah 没有捕捉到任何错误,所以我现在甚至不知道去哪里找出问题所在。
这是表格。我根据另一个 SO post 的建议添加了 enctype,但这并没有什么不同。
<form action="/Product/ExportSVG" enctype="application/x-www-form-urlencoded; charset=UTF-8" id="svgForm" method="post">
<input type="hidden" id="svgProjNo" name="svgProjNo" value="1111">
<input type="hidden" id="svgLineID" name="svgLineID" value="">
<input type="hidden" id="svgData" name="svgData" value="">
</form>
post格式的脚本:
var svgtext = canvas.toSVG(null, reviver);
$("#svgLineID").val($("#LineItem_ParentID").val());
$("#svgData").val(svgtext);
$('#svgForm').trigger('submit');
控制器:
[HttpPost]
public ActionResult ExportSVG(decimal svgProjNo, decimal svgLineID, string svgData)
{
...
}
您可能需要以 Base 64 格式对 SVG 数据进行编码。
我有一个正在 posting 的表单,其中包含 2 个数值和一个包含 SVG(使用 Fabricjs 生成)的长字符串。控制器上传 SVG 并输出包含它的 PDF。我使用标准格式 post 而不是 Ajax POST 的原因是因为我知道 ajax 不能 return 文件下载。
我将 maxJsonLength、aspnet:MaxJsonDeserializerMembers 和 maxRequestLength 都设置为比这里涉及的值(10k 文本)高得多的值,我认为 json-related 在这里不起作用无论如何,因为它是标准格式 post.
当我在 Visual Studio 中 运行 本地时,这非常有效。一旦发布到服务器,它就会失败。我通过远程调试附加到进程,它甚至没有击中控制器。我有一个类似的控制器动作,它也接受相同的 SVG 字符串,但它也不起作用。
在网络控制台中,操作 return 是 200。当我查看 headers 时,我看不出 post 发送到服务器的内容与发送到服务器的内容有什么区别. 我在当地看到的。 Elmah 没有捕捉到任何错误,所以我现在甚至不知道去哪里找出问题所在。
这是表格。我根据另一个 SO post 的建议添加了 enctype,但这并没有什么不同。
<form action="/Product/ExportSVG" enctype="application/x-www-form-urlencoded; charset=UTF-8" id="svgForm" method="post">
<input type="hidden" id="svgProjNo" name="svgProjNo" value="1111">
<input type="hidden" id="svgLineID" name="svgLineID" value="">
<input type="hidden" id="svgData" name="svgData" value="">
</form>
post格式的脚本:
var svgtext = canvas.toSVG(null, reviver);
$("#svgLineID").val($("#LineItem_ParentID").val());
$("#svgData").val(svgtext);
$('#svgForm').trigger('submit');
控制器:
[HttpPost]
public ActionResult ExportSVG(decimal svgProjNo, decimal svgLineID, string svgData)
{
...
}
您可能需要以 Base 64 格式对 SVG 数据进行编码。