2013-06-05 60 views
2

使用的技術:代碼首先,ASP.NET Web API(平安服務)和HTML。帶有裝飾的ASP.NET Web API

對於代碼首先我稱爲用戶

public class User 
{ 
    [Required] 
    public Guid Id { get; set; } 
    [Required] 
    public string Email { get; set; } 
    [Required] 
    public byte[] PasswordHash { get; set; } 
    public bool IsDeleted { get; set; } 
} 

域對象我已裝飾有[必需]的屬性。

然後,我有我的MVC網頁API POST方法

public string Post(Domain.User regModel) 
    { 
     return "saved"; 
    } 

,最後我有我的AJAX調用

var user = { 
Id: "1", 
Email: "[email protected]", 
PasswordHash: "asjdlfkjals;dkjflkjsaldfjsdlkjfiovdfpoifjdsiojfoisj", 
IsDeleted: true 
}; 
$.ajax({ 
type: 'POST', 
url: '/api/registration/post', 
cache: false, 
data: JSON.stringify(user), 
crossDomain: true, 
contentType: "application/json;charset=utf-8", 

success: function (data) { 
    console.log(data); 
} 

});

錯誤的要求 POST http://localhost.com:11001/api/registration/post 500(內部服務器錯誤)

<Error> 
    <script/> 
    <Message> 
    The requested resource does not support http method 'GET'. 
    </Message> 
    </Error> 

我的問題 如果我裝修我的[必需]型號,我得到一個錯誤500 - No Get Method Supported 但是如果我刪除。一切運作良好。

我只是很想理解爲什麼這是MVC Web API的情況。當然我可以創建視圖模型,但是。我只是想明白爲什麼會發生這種情況。

能有人請解釋

感謝

+0

燦你發佈確切的錯誤消息?它說哪個控制器不支持Get方法? – Suhas

+0

已添加。它在註冊控制器上。我確實有一個get方法,但令我困惑的是裝飾對象對象。當我評論他們的時候,這是有用的。 – nivensookharan

+0

儘管您對API進行建模的方式稍微不標準,但這不應該成爲問題。這裏的一切都很好。您是否嘗試使用Web API源代碼? – Suhas

回答

0

能的問題,實際上是你想發佈與Id = "1"用戶在Domain.User指定Id爲類型GUID的。 「1」不會生成有效的Guid,因此當該房產被標記爲Required時,它不能撥打您的Post方法。當您刪除必需的屬性時,可以使用/調用Post方法,因爲它只會將User對象的Id設置爲Null或空Guid,因爲它不是必需的。