我的Android應用程序需要更新一些數據到服務器,我寫了一些WebApi代碼用於更新並從我的Android應用程序發送數據。 兩個工作,當我在本地服務器正在測試正常,但上傳到全球它不工作,並給出錯誤,如後:HTTP/1.1 405方法不允許WebApi(MVC 5)PUT方法
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html
Server: Microsoft-IIS/8.0
我用簡單的代碼都在(無論是在Android應用程序和菲德勒測試) Android和C#:
的Android代碼:
HttpClient client = new DefaultHttpClient();
HttpPut post = new HttpPut(PUT_SETTINGS_DATA);
try {
JSONStringer vm = new JSONStringer().object().key("UserId")
.value(UserId).key("IsGPSOn").value(String.valueOf(isServiceOn)).endObject();
post.setHeader("Accept", "application/json");
post.setHeader("Content-type", "application/json");
StringEntity entity = new StringEntity(vm.toString());
post.setEntity(entity);
HttpResponse response = client.execute(post);
BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String vv = "";
while((vv = br.readLine()) != null){
Log.v("Response Count", vv+" "+UserId);
}
} catch (JSONException e1) {
e1.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
的WebAPI代碼:
[HttpPut]
public int Put(SettingsVM vm)
{
using (var db = new ApiDBContext())
{
string sqlQry = "Select COUNT(ID) FROM Settings WHERE UserId= '" + vm.UserId + "'";
var count = db.Database.SqlQuery<Int32>(sqlQry).SingleOrDefault();
if (count != 0)
{
string sql = "Update Settings Set IsGPSOn={1} where UserId={0}";
count = db.Database.ExecuteSqlCommand(sql, new object[] { vm.UserId, vm.IsGPSOn });
db.SaveChanges();
}
else
{
string sql = "INSERT INTO Settings(UserId,IsGPSOn) VALUES({0},{1})";
count = db.Database.ExecuteSqlCommand(sql, new object[] { vm.UserId, vm.IsGPSOn });
db.SaveChanges();
}
return count;
}
}
我已經檢查並測試所有可能的解決方案來解決此錯誤。但面臨同樣的問題。
謝謝
感謝您的答案.. + 1的鏈接..我檢查所有解決方案.. – Ranjit
抱歉。 .no解決方案爲我工作..所以最後我改變了我的方法從投入職位..感謝 – Ranjit
對不起,聽到上述沒有幫助。找到原因會很有趣,但根據這個[鏈接](http://stackoverflow.com/questions/6058027/cassini-and-iisexpress-put-delete-verbs-cause-405-http-code) ,你可以做任何事情。至少你已經起來跑步了,這是主要的。在這一天結束時,您需要務實,並像您一樣採用解決方法。 – djikay