Встраивание внешнего исполняемого файла в программе C#

На первый взгляд, все выглядит правильно:

вы получили:

  1. config.MapHttpAttributeRoutes(); - настройте маршрут атрибута
  2. config.Routes.MapHttpRoute( - установить маршрут по умолчанию
  3. GlobalConfiguration.Configure(WebApiConfig.Register); - зарегистрироваться при запуске

, чтобы он работал.

Думаю, проблема в том, как вы ее называете

Маршрутизация WebAPI немного отличается от MVC

, например:

В методе get get маршрут установлен как показано ниже

[HttpGet, Route("api/get")]

, поэтому вы должны назвать его {host}/api/get, используя метод GET http

на снимке экрана, который вы вызываете с помощью {host}/api/get/Get - который не будет работать, потому что ни один маршрут не будет соответствовать

То же самое для вашего метода POST

Так что попробуйте еще раз, и вы сможете добраться до него

36
задан Peter Mortensen 26 July 2010 в 23:03
поделиться

3 ответа

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

// extracts [resource] into the the file specified by [path]
void ExtractResource( string resource, string path )
{
    Stream stream = GetType().Assembly.GetManifestResourceStream( resource );
    byte[] bytes = new byte[(int)stream.Length];
    stream.Read( bytes, 0, bytes.Length );
    File.WriteAllBytes( path, bytes );
}

string exePath = "c:\temp\embedded.exe";
ExtractResource( "myProj.embedded.exe", exePath );
// run the exe...
File.Delete( exePath );

Единственная сложная часть - получение правильного значения для первого аргумента ExtractResource . Он должен иметь форму «namespace.name», где namespace является пространством имен по умолчанию для вашего проекта (найдите его в Project | Properties | Application | Default namespace). Вторая часть - это имя файла, который вам нужно будет включить в ваш проект (не забудьте установить опцию сборки на «Embedded Resource»). Если вы поместите файл в каталог, например «Ресурсы», то это имя станет частью имени ресурса (например, «myProj.Resources.Embedded.exe»). Если у вас возникли проблемы, попробуйте открыть скомпилированный бинарный файл в Reflector и загляните в папку Resources. Перечисленные здесь имена - это имена, которые вы передадите в GetManifestResourceStream .

21
ответ дан 27 November 2019 в 05:19
поделиться

Просто добавьте его в свой проект и установите для параметра сборки значение «Встроенный ресурс»

14
ответ дан 27 November 2019 в 05:19
поделиться

Является ли исполняемый файл управляемой сборкой? Если это так, вы можете использовать ILMerge для объединения этой сборки с вашей.

4
ответ дан 27 November 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: