#asp.net #vb.net #visual-studio-2012 #asp.net-web-api
#asp.net #vb.net #visual-studio-2012 #asp.net-web-api
Вопрос:
давний скрывающийся, первый постер.
Я пишу WEBAPI и у меня есть несколько вопросов по поводу вывода по умолчанию. Я знаю, что вывод основан на ПРИНЯТИИ в запросе (json / xml и т.д.). Однако мне необходимо полностью контролировать вывод. Я отформатирую свой собственный XML.
Я нашел несколько примеров того, как это сделать, большинство в .cs, поэтому я пытаюсь изменить это на vb.net .
Вот один из моих тестов:
Public Function Authenticate() As HttpResponseMessage
Dim XML As String = "Message content"
Return New HttpResponseMessage() With { _
.Content = New StringContent(XML, Encoding.UTF8, "application/xml") _
}
End Function
Когда в моей вызывающей функции, когда я пытаюсь:
Верните аутентификацию ()
Я получаю сообщение об ошибке: значение типа ‘System.net.http.httpresponsemessage’ не может быть преобразовано в строку
Похоже, что это довольно часто используется в .cs, поскольку я вижу много примеров. У кого-нибудь есть представление о том, как это сделать в VB.NET ?
Мой контроллер:
<HttpGet, HttpPost> _
Public Function [Login](<FromUri> staff As login) As String
Dim xmlheader As String
Dim head As New header
xmlheader = head.addheader()
If staff.password = "" Then
Dim result As String
Dim err As New messages
result = xmlheader amp; err.geterror("password")
Return Authenticate()
End If
End Function
Спасибо!
Комментарии:
1. Вы вызываете это в контроллере?
2. Да, я вызываю аутентификацию из контроллера.
Ответ №1:
Ваша проблема ясна. У вас есть
Public Function [Login](<FromUri> staff As login) As String
Вам необходимо объявить свой контроллер как
Public Function [Login](<FromUri> staff As login) As HttpResponseMessage
Комментарии:
1. Отлично, спасибо! Я довольно долго смотрел на эту ошибку!
Ответ №2:
Похоже, вы пытаетесь использовать возвращаемое значение из Authenticate в виде строки. Я не знаю точно, что вы пытаетесь сделать, но я думаю .ToString()
, что это сработает.
Dim foo As String = Authenticate().ToString()
' Do whatever with foo here...use it as a string
Комментарии:
1. Я пытаюсь взять на себя выходные данные проекта. В этом случае я хочу, чтобы выводом было только «Содержимое сообщения» без форматирования (на данный момент). В настоящее время я могу получить «содержимое сообщения», просто используя «Return»Содержимое сообщения» с моего контроллера. Однако фактическим результатом для XML будет <string>Содержимое сообщения </string> «.
2. Использование проверки подлинности возврата. Tostring Я получаю проект для компиляции, но я получаю: <string xmlns=» StatusCode» rel=»nofollow noreferrer»> schemas.microsoft.com/2003/10/Serialization /… : 200, Фраза причины: ‘OK’, Версия: 1.1, Содержимое: System.Net.Http.StringContent, Заголовки: { Content-Type: application/xml; charset=utf-8 }</string> как outpu.. совсем не то, чего я хочу. ИТАК, я, должно быть, все делаю неправильно. Мои извинения за редактирование, кажется, я не могу вернуться без сохранения.
3. Позвольте мне сделать дополнительный шаг назад, как я смогу остановить отправку формы <string></string> с выводом?