Nano Hash - криптовалюты, майнинг, программирование

WCF Webapi UriTemplate с расширением файла работает локально, но не на IIS7

У меня есть служба WCF WebApi Rest со следующими конечными точками:

[WebGet(UriTemplate = "{id}")]

и

[WebGet(UriTemplate = "{id}.pdf")]

Первая конечная точка возвращает JSON, а вторая конечная точка возвращает PDF. Обе эти конечные точки работают в моей локальной среде, но конечная точка pdf возвращает 404 на сервере с IIS7.

Есть ли какая-то настройка IIS7, необходимая для выполнения маршрута?

12.04.2012

Ответы:


1

Возможно, вам потребуется добавить .pdf к MIME TYPE в IIS.

попробуйте добавить расширение файла .PDF с типом application/octet-stream

http://technet.microsoft.com/en-us/library/cc725608%28v=ws.10%29.aspx

ОБНОВЛЕНИЕ

Чтобы вернуть динамически сгенерированный PDF-файл напрямую, используя что-то вроде itextsharp:

[WebGet(UriTemplate = "GetPDF/{id}")]        
public void GetPDF(int id)
        {
        Invoice i = InvoiceData.GetInvoiceByID(id);
        MyApp.Data.Export.PDF pdf = new MyApp.Data.Export.PDF();
        byte[] data = pdf.generatePDFBytes(id);

        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=\"" + i.InvoiceNumber + ".pdf" + "\"");
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(data.ToArray());
        Response.End();
    }
13.04.2012
  • Этот тип пантомимы настроен - я думаю, проблема связана с тем, что IIS пытается обслуживать статический файл вместо маршрутизации запроса. 16.04.2012
  • Да, возможно, ты прав. Вы можете просто изменить маршрут, чтобы не использовать расширение и передать параметр в пути, например [WebGet(UriTemplate = "{id}/pdf")]? 17.04.2012
  • На самом деле я пытаюсь реализовать это решение (stackoverflow.com/a/7347522/1330215), чтобы я мог напрямую связать в динамически сгенерированный файл PDF (например: ‹a href=api.company.com/invoices/ 12345.pdf›Ваш счет-фактура‹/a›). 17.04.2012
  • Я сделал что-то подобное, создав функцию для возврата динамически сгенерированного PDF-файла в качестве ответа сервера, чтобы его можно было открыть или загрузить напрямую. Я изменил приведенный выше ответ, чтобы показать пример этой функции. 17.04.2012
  • Спасибо за обновление, Мэтт. Создание PDF-файла для меня не проблема — он работает локально и возвращает красивый PDF-файл. :) Проблема возникает, когда я делаю тот же запрос на сервере, и вместо выполнения маршрута он возвращает 404. 17.04.2012

  • 2

    Я нашел решение этой проблемы. Это простое дополнение web.config:

    <system.webServer>
      <handlers>
          <add name="PDFHandler-Integrated-4.0" path="*.pdf" verb="GET" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" preCondition="integratedMode" />
      </handlers>
    </system.webServer>
    
    10.05.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..