2013-01-18 124 views
3

ASMX服務有問題。如果我使用POST方法,它將返回錯誤「500 - 內部服務器錯誤」。但是如果我使用GET方法,它工作得很好。我查看了IIS日誌,看到了這種情況:ASMX服務在使用POST方法時返回「500錯誤」

2013-01-16 00:00:06 212.158.165.217 GET /service.asmx/GetStopSalesAndQuotes2 Login=xxxxx&Password=xxxxx=&checkPoint=2013-01-08T14:22:56Z 80 - 
85.12.229.170 Mozilla/4.0+(compatible;+Windows+NT+5.1;+SV1);+ross-tur.ru;+8-800-100-99-30+(ext.+501); 500 0 0 140 

2013-01-16 00:00:06 212.158.165.217 POST /service.asmx - 80 - 
62.80.175.194 Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+Protocol+4.0.30319.296) 500 0 0 31 

我找過這個問題並試圖解決它。

首先我考察一個web.config,但必要的標記也紛紛成立:

<add name="HttpGet"/> 
<add name="HttpPost"/> 

次我已經嘗試通過在web.config中添加一些標籤來打開調試模式:

<system.diagnostics> 
    <trace autoflush="true" /> 
    <sources> 
     <source name="System.Web.Services.Asmx"> 
      <listeners> 
       <add name="AsmxTraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="local.log" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId" /> 
      </listeners> 
     </source> 
    </sources> 
    <switches> 
     <add name="System.Web.Services.Asmx" value="Verbose" /> 
    </switches> 
</system.diagnostics> 

但是日誌還沒有被創建。我認爲,應用程序沒有權利。

我試着通過指定管理員的登錄/密碼爲我的網站給管理員權限,但它並沒有解決這個問題,日誌還沒有建立。

我試圖調試此錯誤的其他方式:

  1. 熄滅自定義錯誤模式和「真」狀態切換啓用跟蹤:
<system.web> 
<customErrors mode="Off"/> 
<trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="false"/> 
</system.web> 
  1. 也試過啓用跟蹤和policyTrace選項:
<microsoft.web.services2> 
    <diagnostics> 
     <trace enabled="true"/> 
     <policyTrace enabled="true"/> 
    </diagnostics> 
    <security> 
     <timeToleranceInSeconds>86400</timeToleranceInSeconds> 
     <securityTokenManager 
       type="Megatec.MasterService.TourMLLogic.PasswordProvider, ServiceComponents, Version=1.0.0.0, Culture=neutral" 
       qname="wsse:UsernameToken" 
       xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/> 
    </security> 
    </microsoft.web.services2> 

但我沒有任何結果。我認爲,這存在IIS配置問題。請幫幫我。

P.S.請原諒我的英文不好=)

+0

它看起來像你正在嘗試使用WSE 2.0。這已經過時了。 –

+0

您是否檢查過描述如何調用Web服務的WSDL?確保您的代碼正在關注它。 –

回答

0

我覺得你使用的是不同的網址。

GET /service.asmx/GetStopSalesAndQuotes2 
POST /service.asmx 

見下面我舉的例子:

的Webservice:

public class Test : System.Web.Services.WebService { 

    public Test() {} 

    [WebMethod] 
    public string HelloWorld(string name) { return "Hello " + name; } 
} 

HTML測試:兩個工作

<form action="Test.asmx/HelloWorld" method="get"> 
     <input type="text" name="name"/> 
     <input type="submit" value="Submit"/> 
    </form> 


    <form action="Test.asmx/HelloWorld" method="post"> 
     <input type="text" name="name"/> 
     <input type="submit" value="Submit"/> 
    </form> 
相關問題