2012-02-10 2 views
1

Am используя asp.net для более 5 лет. Но теперь перед лицом странной проблемы. Когда я пытаюсь отправить электронные письма из созданной мной формы, которая содержит asp: button, asp: textbox и т. Д., На кодовой странице он всегда сообщает IsPostBack false. Даже когда я нажимаю кнопку «Отправить почту» (кнопка asp.net). Я не могу понять, в чем проблема.IsPostback всегда false, когда я нажимаю кнопку или любой другой

Это что-то необходимо в файле web.config для обратной передачи ??

Тестовая страница http://buyerrs.com/Test.aspx

Am уверен, что его не проблема в тестовой странице. Потому что это очень обычная страница, в которой есть только одна кнопка & код в vb. Проблема где-то в кеше, urlrewrite или web.config. Но я не могу понять, где?

<?xml version="1.0" encoding="UTF-8"?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

    <configSections> 
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
     <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" /> 
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
     </sectionGroup> 
     </sectionGroup> 
    </sectionGroup> 
    </configSections> 

    <system.web> 

    <httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
    </httpHandlers> 

     <httpModules> 
     <add name="vchHttpModule" type="VchBaseSite.vchHttpModule" /> 
     </httpModules> 

     <!-- need to increase the size of the permitted upload size --> 
     <httpRuntime maxRequestLength="20480" /> 

     <!-- set compilation debug="false" for running application --> 
     <compilation debug="true" strict="false" explicit="true" defaultLanguage="vb"> 
     <assemblies> 
      <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
     </compilation> 

     <trace enabled="false" pageOutput="true" localOnly="true" /> 

     <sessionState mode="Off" /> 

     <!-- customErrors mode="On|Off|RemoteOnly" --> 
     <customErrors mode="Off"> 
     <error statusCode="404" redirect="404.aspx" /> 
     <error statusCode="500" redirect="500.html" /> 
     </customErrors> 

     <pages enableViewState="false"> 
     <namespaces> 
      <clear /> 
      <add namespace="System" /> 
      <add namespace="System.Collections" /> 
      <add namespace="System.Collections.Generic" /> 
      <add namespace="System.Configuration" /> 
      <add namespace="System.IO" /> 
      <add namespace="System.IO.Compression" /> 
      <add namespace="System.Linq" /> 
      <add namespace="System.Text" /> 
      <add namespace="System.Web" /> 
      <add namespace="System.Web.Security" /> 
      <add namespace="System.Web.UI.WebControls" /> 
      <add namespace="System.Web.UI" /> 
      <add namespace="System.Xml.Linq" /> 
     </namespaces> 
     <controls> 
      <add tagPrefix="vch" namespace="VchBaseSite" assembly="VchBaseSite" /> 
     </controls> 
     </pages> 

     <!-- set code access security trust level - this is generally set in the machine.config 
     <trust level="Medium" originUrl=".*" />--> 

     <machineKey 
     validationKey="CF19275EF5E6206C1E289BAC5240240548B1015A2A68137B411A08E2F2BFE55223C42B1FECB10B6A660CD00DEE02F005959D7E4929660A81CF756E69BF3F56C8" 
     decryptionKey="A32BD7AEDF208B05B85828E644774810C928F5F76A6AD0A50F982EBD235634A3" 
     validation="SHA1" decryption="AES" 
     /> 

     <authentication mode="None" /> 

     <roleManager> 
      <providers> 
       <clear /> 
      </providers> 
     </roleManager> 

    </system.web> 

    <system.codedom> 
     <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <providerOption name="CompilerVersion" value="v3.5" /> 
      <providerOption name="WarnAsError" value="false" /> 
     </compiler> 
     <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
      <providerOption name="CompilerVersion" value="v3.5" /> 
      <providerOption name="OptionInfer" value="true" /> 
      <providerOption name="WarnAsError" value="false" /> 
     </compiler> 
     </compilers> 
    </system.codedom> 

    <!-- 
    The system.webServer section is required for running ASP.NET AJAX under Internet 
    Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 


<!-- 
     <defaultDocument> 
     <files> 
      <clear /> 
      <add value="default.aspx" /> 

      <add value="Default.aspx" /> 
      <add value="default.htm" /> 
      <add value="Default.htm" /> 
     </files> 
     </defaultDocument> --> 
    </system.webServer> 

    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" /> 
     </dependentAssembly> 
     </assemblyBinding> 

     <connectionStrings> 
     <remove name="LocalSqlServer" /> 
     </connectionStrings> 
    </runtime> 

</configuration> 

это файл web.config

Наконец я нашел, где ошибка растет. Этот код сайта основан на этом http://www.datafeedscripts.net/default.aspx программном обеспечении. Они используют три DLL файлы (vchsite.dll, vchLicense.dll, vchbasesite.dll) и имеют код HttpModule ниже

<httpModules> 
    <add name="vchHttpModule" type="VchBaseSite.vchHttpModule" /> 

Когда я исключаю, что библиотеки DLL и удалить HttpModule строку из файла web.config постбэка работающ отлично. Так что это ошибка. Они сделали что-то не так в своих файлах Dll или httpmodule.

Но все еще не может понять, что такое ошибка. У него есть шанс контролировать действие обратной передачи из DLL-файлов?

+1

Вы можете показать нам свой код? aspx и aspx.cs? –

+0

Создайте новую тестовую форму и попробуйте еще раз ... не копируйте и не вставляйте; создайте элементы управления вручную. – IrishChieftain

+0

привет @ IrishChieftain. Я попытался создать новую тестовую страницу http://buyerrs.com/Test.aspx. Это не работает. Та же проблема. –

ответ

0

Глядя на вашем исходном коде страницы, как только вы обратная передачу я вижу:

IsPostBack : False on 2/10/2012 3:50:06 PM 

<!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"> 
... 

Как, черт возьми, что «IsPostBack: Ложный ..» реклама помещается перед вашей DOCTYPE. Проверьте обработчик события Protected Sub Page_Load и убедитесь, что это правильный синтаксис и т. Д., Потому что кажется, что он может выстрелить, прежде чем он это сделает, и поэтому не получит правильное состояние IsPostBack.

+2

Response.Write пишет, что это содержимое как первое, что было на странице, когда оно сделано из кода. –

+1

это то, что Response.Write делает –

+0

Загрузка страницы происходит до страницы – zeal

0

Не понимаю один думаю. У вас AutoEventWireup на false, это означает, что страница Load не вызывается, но вы говорите, что она называется ... проводной ... может быть, какой-то другой класс загружен, что-то здесь смешивается.

AutoEventWireup="false" 

Вы можете сделать это верным, чтобы увидеть результаты?

0

Попробуйте установить для параметра AutoEventWireup значение true в теге страницы.

+0

i он тоже не работает. Уверен, что это не проблема на тестовой странице. Потому что это очень обычная страница, в которой есть только одна кнопка и код в vb. Проблема где-то в кеше, urlrewrite или web.config. Но я не могу понять, где? –

+0

Создайте тестовый проект со свежей конфигурацией. Если он работает, сравните конфигурационные файлы по бокам – IrishChieftain

0

Я посмотрел на реализацию IsPostBack MS, который может быть найден here also

Via отражение вы можете «читать» каждое значение, используемое в тех, если заявления.
К сожалению я использую C#, я надеюсь, что вы можете перевести его на VB

protected void Page_Load(object sender, EventArgs e) 
     { 
      Response.Write(IsPostBack.ToString() + " " + DateTime.Now.ToShortDateString()); 
      Response.Write("<br />"); 

      //return this._requestValueCollection != null && (this._isCrossPagePostBack 
      //|| (!this._pageFlags[8] && (this.Context.ServerExecuteDepth <= 0 
      //  || (this.Context.Handler != null && !(base.GetType() != this.Context.Handler.GetType()))) && !this._fPageLayoutChanged)); 

      var pType = this.GetType(); 
      while (pType.Name != "Page") 
       pType = pType.BaseType; 
      var _requestValueCollection = pType.GetField("_requestValueCollection", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this); 
      Response.Write("_requestValueCollection: " + (_requestValueCollection != null).ToString()); 
      Response.Write("<br />"); 

      var _isCrossPagePostBack = pType.GetField("_isCrossPagePostBack", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this); 
      Response.Write("_isCrossPagePostBack: " + _isCrossPagePostBack); 
      Response.Write("<br />"); 

      var _pageFlags = pType.GetField("_pageFlags", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this); 
      Response.Write("_pageFlags: " + (((int)_pageFlags.GetType().GetField("data", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(_pageFlags) & 8) == 8)); 
      Response.Write("<br />"); 
      //SimpleBitVetctor32 
      var cType = this.Context.GetType(); 
      var ServerExecuteDepth = cType.GetProperty("ServerExecuteDepth", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this.Context, null); 
      Response.Write("ServerExecuteDepth: " + ServerExecuteDepth.ToString()); 
      Response.Write("<br />"); 

      Response.Write("Context_Handler: " + (this.Context.Handler != null)); 
      Response.Write("<br />"); 


      var _fPageLayoutChanged = pType.GetField("_fPageLayoutChanged", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this); 
      Response.Write("_fPageLayoutChanged: " + _fPageLayoutChanged.ToString()); 
      Response.Write("<br />"); 

      Response.Write("base.GetType() != this.Context.Handler.GetType())) " + (base.GetType() != this.Context.Handler.GetType())); 
     } 

C# to VB

обновление

Поскольку вы не можете получить значения элементов управления тоже, я подозреваю, _requestValueCollection имеет значение null. _requestValueCollection - это совокупность опубликованных значений и значений строки запроса. Тем не менее это не решает проблему.

1

Я знаю, что это немного устарело, но я бы проверил HttpModule. vchHttpModule может захватить запрос и убрать IsPostBack.

Смежные вопросы