سلام
من یه وب سرویس (اجباراً VB.net 2003) دارم که قراره یه وب متد واسه آپلود فایل داشته باشه، موقع استفاده از متد موردنظر یا خطای
کد HTML:
The remote server returned an error: (401) Unauthorized.
می گیرم یا خطای زیر :
کد HTML:
The remote server returned an error: (405) Method Not Allowed
================================================== =======
کارهایی که انجام دادم :
- یه VirtualDir تو سرور ایجاد کردم که هم تو IIS و هم واسه دایرکتوری فیزیکی تمام مجوزها رو Allow کردم (تو شکلهای ضمیمه 1و 2)
- با توجه به اینکه آپلود فایل از طریق Http صورت می گیره، من یه WebMethod ساده به صورت زیر نوشتم :
<WebMethod()> Public Function Upload_File(ByVal SourcePath As String, _
ByVal ReqUri As String) As String
Try
Dim myWebClient As New WebClient
If (ReqUri.Length > 0) Then
myWebClient.OpenWrite(ReqUri, "PUT")
Dim responseArray As Byte() = myWebClient.UploadFile(ReqUri, "PUT", SourcePath)
Return System.Text.Encoding.ASCII.GetString(responseArray )
Else
Return "Error: Empty Upload Path!"
End If
Catch ex As Exception
Return "Error: Upload_File: " & ex.Message
End Try
End Function
- تا اونجایی که من میدونم My.Computer.Network.UploadFile یه درخواست
multipart/form-data POST request
توسط کامپوننت های یه web application میفرسته ولی من فقط وب سرویس دارم و از برنامه تحت وب خبری نیست! بنابراین نمیتونم از کامپوننت هایی مثل HttpHandler استفاده کنم. ولی با اینحال UploadFile(ReqUri, "POST", SourcePath)
رو هم امتحان کردم ولی بازم به مشکل خوردم ... - من دلفی کار هستم و زیاد وب کار نکردم، ولی به علت اینکه امکان استفاده از "کلاینت-سرور" ای غیر از SOAP و وب سرویس ها برای اینکار رو ندارم، نمیتونم از سوکت و Indy و ... استفاده کنم، ضمنا حجم زیادی کد واسه این وب سرویس نوشته شده که نمیشه به این راحتی همه رو به یه زبان دیگه کانورت کرد؛ به این دلایل فکر میکنم فقط باید از همین کلاسهای دات نت (اونم فقط 1.1 - بخاطر محدودیت نصب نسخه های بالاتر!) استفاده کنم.
البته این پست آقای علیرضا مداح روهم خوندم ولی زیاد با وب سرویس من سازگار نبود.
امیدوارم تو base کار اشتباه نداشته باشم و وقت اساتید محترم رو هم زیاد نگرفته باشم.
با تشکر.