Неожиданное возвращаемое значение из функции

#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> с выводом?