У меня есть две версии веб-формы. Оригинал, в VB. И новый, в C#. Оба они делают по существу одно и то же, но язык отличается, а версия C# немного улучшена по функциональности и удобна для чтения. Разница на самой странице .aspx для каждого из них отличается с помощью свойства autoeventwireup в теге @Page. Теперь, когда я пытаюсь запустить версию VB, я получаю результаты, которые я ищу. Версия C# ничего не делает. В журналах для каждой страницы я вижу, что версия VB получает POST от вызывающего, а версия C# получает GET от вызывающего. Таким образом, ни одно из значений Request.Form не доступно для версии C#. Обе страницы при развертывании вызываются отдельным веб-приложением.C# версия страницы WebForms не работает, версия VB -
VB Версия page.aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Custom Label Generator.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
C# версия page.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Custom Label Generator.aspx.cs" Inherits="CustomLabelGenerator.Custom_Label_Generator" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Custom Label Generator</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
VB версии кода позади:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'LogEvent("Request to print: " & Date.Today)
Try
If Request.Form.Count <= 0 Then
LogEvent("No label data was submitted with the request.")
Exit Sub
End If
'WRITE LABEL DATA BACK TO REQUESTING CLIENT
Me.Response.Clear()
Me.Response.ContentType = "text/plain"
Me.Response.BinaryWrite(System.Text.Encoding.Default.GetBytes(sLabelCode))
Me.Response.Flush()
Catch ex As Exception
LogEvent("Problem generating custom labels. More information: " + ex.Message)
End Try
End Sub
C# версии кода позади:
protected void Page_Load(object sender, EventArgs e)
{
LogHelper.LogEvent("Request to print at: " + DateTime.Now);
try
{
if(Request.Form.Count <= 0)
{
LogHelper.LogEvent("No label data was submitted with the request");
return;
}
Response.Clear();
Response.ContentType = "text/plain";
Response.BinaryWrite(Encoding.Default.GetBytes(labelCode));
Response.Flush();
}
catch (Exception ex)
{
LogHelper.LogEvent("Problem generating custom labels. More information :: " + ex.Message);
}
finally
{
LogHelper.CleanupOldLogs();
}
}
В настоящее время у меня есть куча кода, чтобы выплюнуть всю информацию о запросе, о которой я могу думать. Я также пробовал отменять autoeventwireup, но, похоже, в C# не существует твердого эквивалента. Мне интересно, может быть, это будет лучше, чем вызов WebAPI, заставить его принимать POST, а не вмешиваться в какие-либо другие kruft. Я не уверен, что у меня есть время для такого уровня конверсии, поэтому решение на основе веб-форм будет оценено по достоинству!
Обновление: сброс Request.Form.Keys от версии VB (минус ПОЛЕЗНЫХ ключей мне нужно)
9/23/2015 2:25:10 PM,ALL_HTTP => HTTP_CONNECTION:Keep-Alive
HTTP_CONTENT_LENGTH:1371
HTTP_CONTENT_TYPE:application/x-www-form-urlencoded
HTTP_EXPECT:100-continue
HTTP_HOST:localhost
9/23/2015 2:25:10 PM,ALL_RAW => Connection: Keep-Alive
Content-Length: 1371
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
Host: localhost
9/23/2015 2:25:10 PM,APPL_MD_PATH => /LM/W3SVC/1/ROOT/Custom Label Generator
9/23/2015 2:25:10 PM,APPL_PHYSICAL_PATH => C:\Program Files (x86)\AgileElite\Projects Server\ContentLabelGenerator\
9/23/2015 2:25:10 PM,AUTH_TYPE =>
9/23/2015 2:25:10 PM,AUTH_USER =>
9/23/2015 2:25:10 PM,AUTH_PASSWORD =>
9/23/2015 2:25:10 PM,LOGON_USER =>
9/23/2015 2:25:10 PM,REMOTE_USER =>
9/23/2015 2:25:10 PM,CERT_COOKIE =>
9/23/2015 2:25:10 PM,CERT_FLAGS =>
9/23/2015 2:25:10 PM,CERT_ISSUER =>
9/23/2015 2:25:10 PM,CERT_KEYSIZE =>
9/23/2015 2:25:10 PM,CERT_SECRETKEYSIZE =>
9/23/2015 2:25:10 PM,CERT_SERIALNUMBER =>
9/23/2015 2:25:10 PM,CERT_SERVER_ISSUER =>
9/23/2015 2:25:10 PM,CERT_SERVER_SUBJECT =>
9/23/2015 2:25:10 PM,CERT_SUBJECT =>
9/23/2015 2:25:10 PM,CONTENT_LENGTH => 1371
9/23/2015 2:25:10 PM,CONTENT_TYPE => application/x-www-form-urlencoded
9/23/2015 2:25:10 PM,GATEWAY_INTERFACE => CGI/1.1
9/23/2015 2:25:10 PM,HTTPS => off
9/23/2015 2:25:10 PM,HTTPS_KEYSIZE =>
9/23/2015 2:25:10 PM,HTTPS_SECRETKEYSIZE =>
9/23/2015 2:25:10 PM,HTTPS_SERVER_ISSUER =>
9/23/2015 2:25:10 PM,HTTPS_SERVER_SUBJECT =>
9/23/2015 2:25:10 PM,INSTANCE_ID => 1
9/23/2015 2:25:10 PM,INSTANCE_META_PATH => /LM/W3SVC/1
9/23/2015 2:25:10 PM,LOCAL_ADDR => ::1
9/23/2015 2:25:10 PM,PATH_INFO => /Custom Label Generator/Custom Label Generator.aspx
9/23/2015 2:25:10 PM,PATH_TRANSLATED => C:\Program Files (x86)\AgileElite\Projects Server\ContentLabelGenerator\Custom Label Generator.aspx
9/23/2015 2:25:10 PM,QUERY_STRING =>
9/23/2015 2:25:10 PM,REMOTE_ADDR => ::1
9/23/2015 2:25:10 PM,REMOTE_HOST => ::1
9/23/2015 2:25:10 PM,REMOTE_PORT => 59112
9/23/2015 2:25:10 PM,**REQUEST_METHOD => POST**
9/23/2015 2:25:10 PM,SCRIPT_NAME => /Custom Label Generator/Custom Label Generator.aspx
9/23/2015 2:25:10 PM,SERVER_NAME => localhost
9/23/2015 2:25:10 PM,SERVER_PORT => 80
9/23/2015 2:25:10 PM,SERVER_PORT_SECURE => 0
9/23/2015 2:25:10 PM,SERVER_PROTOCOL => HTTP/1.1
9/23/2015 2:25:10 PM,SERVER_SOFTWARE => Microsoft-IIS/7.5
9/23/2015 2:25:10 PM,URL => /Custom Label Generator/Custom Label Generator.aspx
9/23/2015 2:25:10 PM,HTTP_CONNECTION => Keep-Alive
9/23/2015 2:25:10 PM,HTTP_CONTENT_LENGTH => 1371
9/23/2015 2:25:10 PM,HTTP_CONTENT_TYPE => application/x-www-form-urlencoded
9/23/2015 2:25:10 PM,HTTP_EXPECT => 100-continue
9/23/2015 2:25:10 PM,HTTP_HOST => localhost
C# версии отвала Request.Params.Keys (другие части заготовки)
9/23/2015 2:17:04 PM --- Request to print at: 9/23/2015 2:17:04 PM
9/23/2015 2:17:04 PM --- Request.Params.Keys:
9/23/2015 2:17:04 PM --- ALL_HTTP => HTTP_CONTENT_TYPE:application/x-www-form-urlencoded
HTTP_HOST:localhost
9/23/2015 2:17:04 PM --- ALL_RAW => Content-Type: application/x-www-form-urlencoded
Host: localhost
9/23/2015 2:17:04 PM --- APPL_MD_PATH => /LM/W3SVC/1/ROOT/Custom Label Generator
9/23/2015 2:17:04 PM --- APPL_PHYSICAL_PATH => C:\Program Files (x86)\AgileElite\Projects Server\ContentLabelGenerator\
9/23/2015 2:17:04 PM --- AUTH_TYPE =>
9/23/2015 2:17:04 PM --- AUTH_USER =>
9/23/2015 2:17:04 PM --- AUTH_PASSWORD =>
9/23/2015 2:17:05 PM --- LOGON_USER =>
9/23/2015 2:17:05 PM --- REMOTE_USER =>
9/23/2015 2:17:05 PM --- CERT_COOKIE =>
9/23/2015 2:17:05 PM --- CERT_FLAGS =>
9/23/2015 2:17:05 PM --- CERT_ISSUER =>
9/23/2015 2:17:05 PM --- CERT_KEYSIZE =>
9/23/2015 2:17:05 PM --- CERT_SECRETKEYSIZE =>
9/23/2015 2:17:05 PM --- CERT_SERIALNUMBER =>
9/23/2015 2:17:05 PM --- CERT_SERVER_ISSUER =>
9/23/2015 2:17:05 PM --- CERT_SERVER_SUBJECT =>
9/23/2015 2:17:05 PM --- CERT_SUBJECT =>
9/23/2015 2:17:05 PM --- CONTENT_LENGTH => 0
9/23/2015 2:17:05 PM --- CONTENT_TYPE => application/x-www-form-urlencoded
9/23/2015 2:17:05 PM --- GATEWAY_INTERFACE => CGI/1.1
9/23/2015 2:17:05 PM --- HTTPS => off
9/23/2015 2:17:05 PM --- HTTPS_KEYSIZE =>
9/23/2015 2:17:05 PM --- HTTPS_SECRETKEYSIZE =>
9/23/2015 2:17:05 PM --- HTTPS_SERVER_ISSUER =>
9/23/2015 2:17:05 PM --- HTTPS_SERVER_SUBJECT =>
9/23/2015 2:17:05 PM --- INSTANCE_ID => 1
9/23/2015 2:17:05 PM --- INSTANCE_META_PATH => /LM/W3SVC/1
9/23/2015 2:17:05 PM --- LOCAL_ADDR => ::1
9/23/2015 2:17:05 PM --- PATH_INFO => /Custom Label Generator/Custom Label Generator
9/23/2015 2:17:05 PM --- PATH_TRANSLATED => C:\Program Files (x86)\AgileElite\Projects Server\ContentLabelGenerator\Custom Label Generator
9/23/2015 2:17:05 PM --- QUERY_STRING =>
9/23/2015 2:17:05 PM --- REMOTE_ADDR => ::1
9/23/2015 2:17:05 PM --- REMOTE_HOST => ::1
9/23/2015 2:17:05 PM --- REMOTE_PORT => 58997
9/23/2015 2:17:05 PM --- **REQUEST_METHOD => GET**
9/23/2015 2:17:05 PM --- SCRIPT_NAME => /Custom Label Generator/Custom Label Generator
9/23/2015 2:17:05 PM --- SERVER_NAME => localhost
9/23/2015 2:17:05 PM --- SERVER_PORT => 80
9/23/2015 2:17:05 PM --- SERVER_PORT_SECURE => 0
9/23/2015 2:17:05 PM --- SERVER_PROTOCOL => HTTP/1.1
9/23/2015 2:17:05 PM --- SERVER_SOFTWARE => Microsoft-IIS/7.5
9/23/2015 2:17:05 PM --- URL => /Custom Label Generator/Custom Label Generator
9/23/2015 2:17:05 PM --- HTTP_CONTENT_TYPE => application/x-www-form-urlencoded
9/23/2015 2:17:05 PM --- HTTP_HOST => localhost
9/23/2015 2:17:05 PM --- /****************** Request.Form.Keys: ***********************/
9/23/2015 2:17:05 PM --- /****************** Request.Form.AllKeys: ***********************/
9/23/2015 2:17:05 PM --- /****************** Request.QueryString.Keys: ***********************/
было бы хорошо, если бы вы включили ошибку :) – Rex
нет на самом деле ошибки. Он просто срывает все данные запроса. версия vb говорит, что это POST, а версия C# говорит о GET. Должен ли я это исправить? – Matt